如何使用 Apollo server 4 上传文件?

问题描述 投票:0回答:1

我正在使用 apolloserver 4 开发一个社交媒体后端应用程序,我想添加一个功能来上传图片以供发布。我搜索了所有无法找到如何在 apollo server 4 中开发 Graphql API 来上传图像的文档。

我搜索了

graphql-Upload
但它不起作用,没有找到相关的文件

我希望解决方案应该是最新的并且是 Es6 版本

javascript node.js file-upload graphql apollo-server
1个回答
0
投票

这是一个在 Apollo 4 上使用 Express graphql-upload 的工作示例,以及一个示例 CURL 请求(请注意,您需要使用启动沙箱时显示的 url 更新):

$ curl https://2nnbw4-4000.csb.app/ \
  -F operations='{ "query": "mutation ($id: String!, $image: Upload!) { uploadImage(id: $id, image: $image) { id filename } }", "variables": { "image": null, "id": "1" } }' \
  -F map='{ "0": ["variables.image"] }' \
  -F [email protected] \
  -H 'Apollo-Require-Preflight: true'

{"data":{"uploadImage":{"id":"1","filename":"tmp.jpg"}}}

Apollo 团队的文档这里是图片上传的最佳实践,还有一些关于使用带有CSRF 保护的 graphql-upload 的注释。简单地说,为了避免被 CSRF 保护阻止,您需要要么

  1. 发送带有请求的
    Apollo-Require-Preflight
    X-Apollo-Operation-Name
    标头
  2. 使用
    new ApolloServer({ csrfPrevention: false })
  3. 禁用CSRF保护
© www.soinside.com 2019 - 2024. All rights reserved.