如何使用带请求体的curl请求测试本地NodeJS服务接口
解决curl测试NodeJS POST接口时的Headers参数错误
这个错误的核心原因是:你在PowerShell里运行curl命令时,实际调用的是PowerShell内置的Invoke-WebRequest(curl是它的别名),而非真正的GNU curl工具,两者的参数格式不兼容。
下面是几种可行的解决办法:
方法1:调用真正的curl工具
如果你已经安装了GNU curl(比如通过Git Bash、Chocolatey或直接下载安装),在PowerShell里明确使用curl.exe来调用:
curl.exe -X POST -H "Content-Type: application/json" -d '{"msg": "测试内容"}' http://localhost:3000/calc
(把3000换成你的NodeJS服务实际监听的端口)
方法2:适配PowerShell的Invoke-WebRequest格式
如果不想额外安装工具,直接用PowerShell的内置命令,需要把Headers参数改成哈希表格式:
Invoke-WebRequest -Uri http://localhost:3000/calc -Method POST -Headers @{"Content-Type"="application/json"} -Body '{"msg": "测试内容"}'
要是你习惯用curl别名,也可以这么写:
curl -Uri http://localhost:3000/calc -Method POST -Headers @{"Content-Type"="application/json"} -Body '{"msg": "测试内容"}'
方法3:切换到CMD运行
在Windows的CMD命令行中,curl默认指向真正的GNU curl工具(如果已安装),直接用标准的curl命令即可:
curl -X POST -H "Content-Type: application/json" -d '{"msg": "测试内容"}' http://localhost:3000/calc
内容的提问来源于stack exchange,提问作者Javid
相关产品推荐
相关产品推荐

