有没有办法通过邮递员将文件上传到 GraphQL API?

Is there any way to upload files via postman into a GraphQL API?

目前我正在使用 Altair 将文件(在我的情况下它只是用于图像)上传到我的 GraphQL API。然而,我所有的其他路线都存储在邮递员中,如果我可以只使用一个应用程序——邮递员——来处理一切,那就太好了。

在 Altair 中,我可以简单地 select 一张图片并将其存储为一个变量,我将其作为我的 GraphQL 上传字段的值。

有谁知道 Postman 是否支持该(或类似)功能?

谢谢!

您可以使用 Form-Data 来完成此操作。

关键:操作(这是用于查询/变异)

{"query":"mutation updateAvatar($avatar:Upload!) {\n  updateAvatar(avatar: $avatar)\n}"}

键:映射(这是将文件映射到您的查询/突变)

{"0": ["variables.avatar"]}

密钥:0(上传您的 image/file 等)

上述解决方案对我不起作用,但作为基础有所帮助。

我已经在我的浏览器中检查了其他 GraphQL 服务器请求并尝试模拟它们。

这对我来说是这样的:

我的服务器使用 Graphene 运行 Django,可能存在差异(?)我猜

@Brad Larson 的回答是正确的。但包含错字:

你应该 {"0":["variables.file"]} 而不是 "[variables.file]"

(对不起,我没有足够的声誉来发表评论)

我 运行 使用 graphene-file-upload==1.2.2 作为上传处理程序解决了这个问题,发现准备正确的负载非常复杂,因为请求包含上传文件的附加参数,所以我希望这会有所帮助:

这是curl等效的参考请求:

curl --location --request POST '<REDACTED>/graphql' \
--header 'Authorization: Bearer <REDACTED>' \
--form '0=@"/home/user/Downloads/Five.pdf"' \
--form 'map="{\"0\": [\"variables.data.attachments\"]}"' \
--form 'operations="{
    \"query\": \"mutation AddPOAttachments($data: AddProductAttachmentsInput!) { add_product_attachments(data: $data) { attachments { id url purpose file_info { name type size_in_bytes} __typename } __typename }}\",
    \"variables\":
    {
        \"data\":
        {
            \"sku\": \"123456sku\",
            \"attachments\": null,
            \"purpose\": \"Test\"
        }
    }
}"'