首页 > 解决方案 > 有什么方法可以在 reactjs 中使用现代反应中继向 graphql 发送多部分表单请求

问题描述

我是新来对graphql做出反应的人。

我想通过网络接口将所有类型的文件上传到服务器。

我需要做的就是使用中继编写一个graphql突变,它将多部分表单数据发送到服务器。

我试图在谷歌上搜索它,但我没有找到任何合适的解决方案。

标签: reactjsgraphqlrelay

解决方案


GraphQL 消息唯一真正的标准传输是JSON HTTP POST。“文件上传”在 GraphQL 中根本不是一个概念;您必须在 JSON 中编码文件内容(可能首先对其进行 base64 编码)并将其作为参数传递给突变,可能在"variables":块中。

{
  "query": "mutation Upload($name: String!, $contents: String!) { uploadFile(name: $name, contents: $contents) { id } }",
  "variables": {
    "name": "hello.txt",
    "contents": "aGVsbG8gd29ybGQ="
  }
}

您可能会考虑的另一条路径是生成一次性上传 URL。然后你会有一个 GraphQL 突变,它启动了上传并返回了 URL

mutation StartUpload($name: String) {
  startUpload(name: $name) {
    id
    url
  }
}

然后您的应用程序可以将文件 HTTP POST 到返回的 URL。实现这一点留作练习。


推荐阅读