在正文中发送 GET 请求参数

Posted

技术标签:

【中文标题】在正文中发送 GET 请求参数【英文标题】:Sending GET request parameters in body 【发布时间】:2017-06-23 10:35:25 【问题描述】:

我有一个接受许多参数的 API。 传递参数的值会超过 URL Header 的长度。

我正在使用 Postman 客户端在正文中传递参数,但这没有对如何使这项工作产生任何想法。

API 接受许多参数,因为后端是旧的,并且通过服务总线公开为 API。

【问题讨论】:

【参考方案1】:

旧版本的 Postman 不允许您使用 get 请求发送 body 数据。

但是,如果您的服务器接收作为 URL 参数的数据,您将无法仅仅更改发送它们的方式并将它们包含到正文中(服务器不会接受它们)。

因此,如果参数的长度确实很大,并且服务器确实可以从正文而不是从参数中接收相同的数据,那么 Postman 就不是您可以使用的工具(也许 cURL 适合您)。

如果您的服务器只允许将数据作为 URL 参数发送并且它们很长(超过 2000 个字符 What is the maximum length of a URL in different browsers?),那么我认为您没有机会测试此 API。

更新:新版本 7.20.1 现在允许使用 GET 请求发送正文

【讨论】:

Brilliant Answer 您能否在 curl 中添加如何执行此操作,以供像我这样受到 API 挑战的人将来参考:) 谢谢:) 不幸的是我不太了解 cURL。我需要谷歌它给你一个答案。告诉我你想做什么:在 GET 请求的正文中传递一些东西,或者只是使用 cURL 在 URL 中传递参数?您可以在 Postman 中生成 cURL 代码!此处还提供其他语言。 我可以用谷歌搜索并得到答案。我想让你用谷歌搜索并粘贴答案的原因是为了帮助像我这样的其他人。一个简单的 curl 命令在正文中传递参数而不是在url 将使许多其他人的答案更好。 问题是 cURL 是可以做到这一点的工具之一。但它根本与 Postman 无关。 Curl 示例...我在尝试使用 Postman 中的 Elasticsearch 示例时遇到了这个问题 - 请参阅此处:elastic.co/guide/en/elasticsearch/reference/2.0/… 具体细节:curl -XGET 'localhost:9200/test/_analyze' -d ' "text" : "this is a test" '【参考方案2】:

解决方法:

    将请求类型更改为 POST。 设定身体的价值 将请求类型更改为 GET 发送请求并包含正文

【讨论】:

简单地发出 POST 请求而不是 GET 对我也有效:github.com/postmanlabs/postman-app-support/issues/131 你的回答解决了我的另一个问题,我得到了不受支持的媒体获取类型,按照你的步骤我改为应用程序 json。 :)【参考方案3】:

Postman 已经在 get 中添加了发送 body 的功能 请求。

但我仍然建议发送 post 请求(如果存在正文),因为像 angular http 客户端这样的许多项目还没有更新协议。

【讨论】:

【参考方案4】:

最新 Postman 支持 Get 请求的 body 对象

如上图选择json格式即可

【讨论】:

以上是关于在正文中发送 GET 请求参数的主要内容,如果未能解决你的问题,请参考以下文章

在邮递员中获取接受参数的请求,当前发送不支持的媒体类型错误

Zapier 应用程序:使用 GET 请求发送正文

使用原始请求标头 C# 在请求正文中发送参数和文件

GET 请求通过 Postman 工作,但浏览器告诉我 GET 请求不能有正文

无法通过使用 Alamofire 的参数的 GET 请求成功

javascript jquery Ajax在请求正文或查询参数中发送数据