@graphql_ru
GraphQL — русскоговорящее сообщество

Общаемся на темы, посвященные GraphQL и опыту его использования. Проблемы. Новости. Решения. Вам могут быть полезны: @apollo_ru, @react_js, @vuejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание в чате было полезным и комфортным.

352 members

Архив канала @graphql_ru 24 сентября 2018 г.

06:04:05 ДП
User 56456060
User 267858911
Кто-нибудь знает, как можно отправить файл через graphql-request или ему подобную библиотеку на ApolloServer ?
Схема мутации на сервере такая:
addFile(file: Upload): String.
Код клиента на скрине
На скрине у тебе никак не может быть код клиента. Пакет fs в браузере не работает.

Для отправки файлов есть хорошая спецификация https://github.com/jaydenseric/graphql-multipart-request-spec

Там внизу есть либы, которые надо заюзать как на стороне клиента, так и на стороне сервера.
github.com/jaydenseric/graphql-multipart-request-spec
A spec for GraphQL multipart form requests (file uploads). - jaydenseric/graphql-multipart-request-spec
06:08:16 ДП
User 56456060
GraphQL создан для передачи типизируемых данных. Бинарные надо костылить самим. Ну как костылить, просто брать спеку выше и применять ее к свои задачам.

Но для загрузки файлов нет ничего лучше чем старый добрый REST API. Поддерживаю рекомандацию Ивана (t.me/graphql_ru/5902):
> Мы кстати для заливки файла используем сложную схему, когда через графкл создается signed request для s3 и потом на s3 файл заливается
06:17:35 ДП
User 56456060
Откапал свой старый GIST по загрузке картинок и их нарезке через AWS, там оказца даже чутка расписано что как и для чего:
https://gist.github.com/nodkz/6b4aa7678ec1ab2c1aa8e46a61630d9e#gistcomment-2554150
gist.github.com/nodkz/6b4aa7678ec1ab2c1aa8e46a61630d9e
Upload image to S3 with resizing using lambda functions via hooks - 1-server-generate-sign-url.js
08:22:01 ДП
08:22:04 ДП
User 267858911
User 56456060
На скрине у тебе никак не может быть код клиента. Пакет fs в браузере не работает.

Для отправки файлов есть хорошая спецификация https://github.com/jaydenseric/graphql-multipart-request-spec

Там внизу есть либы, которые надо заюзать как на стороне клиента, так и на стороне сервера.
github.com/jaydenseric/graphql-multipart-request-spec
A spec for GraphQL multipart form requests (file uploads). - jaydenseric/graphql-multipart-request-spec
Клиент это не обязательно браузер :)
У меня там клиент на node js.
08:22:29 ДП
User 267858911
ок, спасибо за ответы, сделаем на rest api
08:24:58 ДП
User 56456060
Щас допишу статейку по загрузке файлов, потом поделюсь сюда ссылкой.
Начало такое:

Частенько в группах по GraphQL возникает вопрос, - "А как загружать файлы?".
Если залезть в [спецификацию GraphQL](http://facebook.github.io/graphql/draft/), то про загрузку файлов вы там не найдете ни слова. И на это есть причина, GraphQL сильно точился на передачу типизированных и связанных между собой данных. И старался никак не ограничивать пользователей в способе загрузки файлов. Ведь спецификация реализовывается на куче языков, и что для одного языка может быть хорошо, то для другого - беда.

Но это не значит, что с GraphQL нельзя использовать передачу файлов. Можно, но это уже другой уровень абстракции. Разработчик сам волен выбирать для своего приложения способ загрузки файлов.
Ведь загрузка файлов зависит не только от того как ее может принять сервер, но и от того как клиент может передать файл.
08:55:17 ДП
User 294802884
User 267858911
Кто-нибудь знает, как можно отправить файл через graphql-request или ему подобную библиотеку на ApolloServer ?
Схема мутации на сервере такая:
addFile(file: Upload): String.
Код клиента на скрине
https://www.npmjs.com/package/apollo-upload-client
npmjs.com/package/apollo-upload-client
Enhances Apollo Client for intuitive file uploads via GraphQL mutations.
09:00:46 ДП
User 267858911
User 294802884
https://www.npmjs.com/package/apollo-upload-client
npmjs.com/package/apollo-upload-client
Enhances Apollo Client for intuitive file uploads via GraphQL mutations.
Проблема в том, что уменя клиент != браузер, клиент написан на node js, а Apollo-client, насколько я знаю не работает в ноде
09:05:33 ДП
User 294802884
а как же он работает при SSR?!
09:27:28 ДП
User 118564668
User 267858911
Проблема в том, что уменя клиент != браузер, клиент написан на node js, а Apollo-client, насколько я знаю не работает в ноде
работает конечно, просто вам нужно vanila api юзать
10:20:36 ДП
User 118564668
а откуда пошла тема, что graphql сервер отдаёт 200 всегда? в спеке такого не нашёл
10:22:45 ДП
User 321317845
Либо 200, либо 500
10:23:25 ДП
User 321317845
Откуда - хз, вроде в спешке я этого не видел
10:23:38 ДП
User 321317845
*спеке
11:12:09 ДП
User 56456060
3 способа загрузки файлов через GraphQL. Если есть что добавить, поправить - не проходите мимо 🤓

https://github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
Contribute to nodkz/conf_talks development by creating an account on GitHub.
11:17:32 ДП
User 267858911
User 56456060
3 способа загрузки файлов через GraphQL. Если есть что добавить, поправить - не проходите мимо 🤓

https://github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
Contribute to nodkz/conf_talks development by creating an account on GitHub.
Круто
01:25:54 ПП
User 584555800
apollographql/graphql-tools v2.23.0 → 4.0.0 🎉
07:15:33 ПП
User 357745820
User 56456060
3 способа загрузки файлов через GraphQL. Если есть что добавить, поправить - не проходите мимо 🤓

https://github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
github.com/nodkz/conf_talks/tree/master/particles/graphql/fileUploads
Contribute to nodkz/conf_talks development by creating an account on GitHub.
+
07:15:33 ПП
User 210944655
Андрей (0) увеличил репутацию Pavel Nod (5)