Конечная точка GraphQL для загрузки файла

Можно ли запустить загрузку файла в браузере из конечной точки GraphQL в приложении apollo-server-express?

У меня есть конечная точка, написанная в стандартной экспресс-функции app.get (см. Ниже), но я хотел бы использовать контекст GraphQL для загрузки файла, поэтому мне интересно, можно ли вызвать загрузку из конечной точки GraphQL.

Вот простой пример того, что у меня есть на экспресс-конце в функции app.get:

app.get('/download-batch/:batchId', async (req, res) => {
  res.send(new Buffer('test'));
});

Любая помощь была бы мне очень признательна. Спасибо!

Здравствуйте, у меня тоже есть такое же требование загрузки csv из конечной точки graphql. вы уже получили какое-нибудь решение?

Ashish Panchal 24.01.2019 04:20

@AshishPanchal Я придерживался этого маршрута, используя обычный маршрут Express.js, но в последнее время я не возвращался, чтобы вернуться к нему.

jasonmerino 24.01.2019 20:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
12
2
5 011
2

Ответы 2

Да, но для этого вам потребуется создать настраиваемую конечную точку. Вы не можете использовать существующую конечную точку, которую используете для выполнения запросов. Используя настраиваемую конечную точку, вы должны добавить промежуточное программное обеспечение и обработать данные в буфер или любой другой формат, который вам нужен. Но это не рекомендуется. Это снова станет еще одной конечной точкой, вместо которой вы можете написать API для ее обслуживания (в конце концов, graphql построен в основном на единственной конечной точке).

Боштьян Циган упоминает здесь некоторые решения и подробно описывает использование GraphQL в качестве прокси с Minio. Бэкэнд попросит Мино создать временную ссылку, которую можно отправить обратно в браузер для прямого доступа.

Это подходящее решение для многих случаев использования.

Другие вопросы по теме