本地API测试:如何用CURL发送带JSON payload的POST请求?
正确构造带JSON Payload的CURL POST请求
你之前的两种方法都存在问题:
- 第一种是GET请求,根本没发送POST所需的JSON数据,肯定无效;
- 第二种的问题大概率出在URL末尾的
?key1——这个查询参数可能会干扰API对JSON请求体的解析,另外确认下test.txt里的JSON格式有没有多余的错误字符(你的示例JSON是没问题的)。
下面给你两种可靠的正确写法:
方法1:命令行直接传JSON
适合JSON内容不长的场景,注意不同系统的引号转义规则有区别:
Windows系统(推荐用PowerShell执行):
curl -X POST -H "Content-Type: application/json" -d "{ \"key1\": [{\"subkey1\":\"subvalue1\",\"subkey2\":\"subvalue2\"}], \"key2\": [{\"subkey3\":\"subvalue3\",\"subkey4\":\"subvalue4\"}] }" http://localhost/test/api
Linux/macOS系统:
curl -X POST -H "Content-Type: application/json" -d '{ "key1": [{"subkey1":"subvalue1","subkey2":"subvalue2"}], "key2": [{"subkey3":"subvalue3","subkey4":"subvalue4"}] }' http://localhost/test/api
方法2:通过本地文件传递JSON
如果JSON内容复杂,存成文件更省心,记得去掉URL后面多余的?key1:
curl -X POST -H "Content-Type: application/json" --data-binary "@D:/test.txt" http://localhost/test/api
额外提醒:
- 确认你的API确实支持接收
application/json格式的请求体; - 检查本地服务器是否正常运行,API端点
http://localhost/test/api路径是否正确; - Windows下用CMD执行curl可能会有引号转义问题,优先用PowerShell。
内容的提问来源于stack exchange,提问作者NEWMOM
相关产品推荐
相关产品推荐

