有什么方法可以使用React Relay Modern将多部分表单请求发送到reactjs中的graphql

时间:2019-05-02 08:05:58

标签: reactjs graphql relay

我是刚开始对graphql做出反应的人。

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

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

我尝试在Google上进行搜索,但没有找到任何合适的解决方案。

1 个答案:

答案 0 :(得分:0)

GraphQL消息的唯一真正的标准传输是a 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。实施此操作是一项练习。