我正在尝试使用 POSTMAN 模拟来自移动应用程序的 POST 调用。我做了以下事情:
- 动词 : POST
- Params:添加了 2 个参数(都显示在 URL 中)
- Header:添加键值对 - Content-Type/application/json
- 正文:选择“表单数据”单选按钮并添加 2 个键值对来表示表单输入 - email/someone@gmail.com & age/18
当我提交请求并在我的服务器代码 (PHP) 中打印 $request 对象时,我只获得参数(步骤 #2)而不是表单字段。
想知道是 POSTMAN 没有传递表单数据还是我没有查看正确的位置(即在 $request 对象中)。
我还尝试使用“原始”而不是“表单数据”并传递了一个 JSON,但结果相同。
我尝试从 Web 应用程序调用相同的 API,我在 $request 对象中获得了正确的表单数据值。
非常感谢任何帮助解决我面临的问题的帮助。我花了将近一整天的时间浏览 POSTMAN 文档并在 google 上进行搜索,但进展不大。
最佳答案
Verb : POST
正确
Params: added 2 params (both show up in the URL)
你可能不应该那样做
如果您正在发出 POST 请求,请将它们放在正文选项卡上的“表单数据”中。 (POST 请求可能包含查询字符串数据,但这并不常见)。
Header: added key-value pair - Content-Type / application/json
绝对不要那样做。
您发送的是表单编码数据,而不是 JSON。
如果您不覆盖它,Postman 将自动设置正确的内容类型。
Body: selected 'form-data' radio button and added 2 key-value pairs to represent the form input - email / someone@gmail.com & age / 18
可能是正确的。表单的默认编码是 x-www-form-urlencoded,但 PHP 可以处理这两种编码。
I only get the params (step #2) and not the form field.
PHP 本身不支持使用 JSON 编码的消息正文解析 HTTP 请求,因此它看到您声称正在发送 JSON 并且什么都不做。
如果它确实为此支持 JSON,那么它会尝试将表单编码数据解析为 JSON 并失败。
I also tried with 'raw' instead of 'form-data' and passed a JSON, but same result.
关于php - 如何通过 POSTMAN 模拟在 POST API 调用中发送表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37275907/