有没有办法通过邮递员将文件上传到 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\"
}
}
}"'
目前我正在使用 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\"
}
}
}"'