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

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

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

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

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

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


person jasonmerino    schedule 15.10.2018    source источник
comment
Здравствуйте, у меня также есть такое же требование загрузки csv из конечной точки graphql. вы уже получили какое-нибудь решение?   -  person Ashish Panchal    schedule 24.01.2019
comment
@AshishPanchal Я придерживался этого маршрута, используя обычный маршрут Express.js, но в последнее время я не возвращался, чтобы вернуться к нему.   -  person jasonmerino    schedule 24.01.2019


Ответы (2)


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

person Sandeep Kumar    schedule 22.01.2019

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

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

person tiomno    schedule 04.02.2021