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

Posted

技术标签:

【中文标题】有没有办法通过邮递员将文件上传到 GraphQL API?【英文标题】:Is there any way to upload files via postman into a GraphQL API? 【发布时间】:2020-09-05 14:12:48 【问题描述】:

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

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

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

谢谢!

【问题讨论】:

【参考方案1】:

您可以使用 Form-Data 来执行此操作。

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

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

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

"0": ["variables.avatar"]

密钥:0(上传您的图像/文件等)

【讨论】:

完美,可行!我想知道在哪里可以获得“选择文件提示”,但我最终找到了它。它有点隐藏,因为您需要将鼠标悬停在关键字段上以将其从“文本”更改为“文件”。谢谢! graphql 没有为我检测到操作。我收到错误 ``` Bad POST multipart request: no part named "graphql" or "query" ``` 我得到这个错误“KeyError at / graphql / 'variables'” 你能告诉我为什么吗? prnt.sc/yu73z9 - 错误 我已经尝试过这里提供的解决方案,但我得到了错误POST body missing, invalid Content-Type, or JSON object has no keys. 对此有什么想法吗? @EmadBaqeri 我遇到了同样的问题,这对我有用***.com/a/69607115/4984903。【参考方案2】:

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

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

这对我来说是这样的:

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

【讨论】:

能否请您也分享一下查询的内容?在我的情况下,profile_picture 没有填充查询变量,query 没有被传递给 graphene/django。我必须在另一个答案中使用operations(但map 也没有填充查询变量)。【参考方案3】:

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

您应该使用"0":["variables.file"] 而不是"[variables.file]"

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

【讨论】:

以上是关于有没有办法通过邮递员将文件上传到 GraphQL API?的主要内容,如果未能解决你的问题,请参考以下文章

在邮递员中使用 php curl 将文件上传到 Nextcloud 但上传的文件为空

通过邮递员通过 API 使用 Rails 主动存储上传文件(.pdf、.jpg 等)? (不通过 Rails 视图)

如何使用流明通过android将图像文件上传到cloudinary

使用 Node 和 graphql 将文件流式上传到 Azure Blob 存储

未从突变中获取 server.js 文件中邮递员发送的数据

有没有办法我们可以通过Windows中的CMD将文件上传到谷歌驱动器文件夹[关闭]