Shell脚本使用curl命令发送JSON数据

在Linux使用命令行工具curl发送JSON数据需要把content-type设置为“application/json”。

-H "Content-Type: application/json

示例

curl -H "Content-Type: application/json" -X POST -d '{"username":"jack","age":10}' http://example.com/api/user

-H,--header:设置头信息Content-Type为application/json。
-d,--data:添加发送的数据。
-X:指定http请求的方法。如果使用了-d,默认是使用POST,可以省略-X参数。

此外也可以把json数据放在一个文件里。

curl -H "Content-Type: application/json" -X POST -d @user.json http://example.com/api/user

注意:文件前的@不能去掉

Windows

对于windows,-d参数的数据,需要使用双引号,json里的双引号使用反斜杠转义才可以:

curl -H "Content-Type: application/json" -X POST -d "{\"username\":\"jack\",\"age\":10}" http://example.com/api/user

版权声明:著作权归作者所有。

@angelpray,curl: (23) Failed writing body (0 != 22)错误有一种可能是你服务器端还没有发送响应就关闭curl的读取通道了。不知道你怎么自行解决的呢?
中文要看你服务器端和客户端的与编码相关的环境设置,如果编码不匹配,就会导致中文乱码。
自行解决了,我在node中是这样响应请求的:res.end(`注册用户为:${req.body.username}`)。出现错误是,curl中不能用中文作为响应。只要把中文改成英文就OK~
window下用curl,我尝试你的命令,json数据是没问题了,但传入到node中,然后用res响应username却出现了错误:curl: (23) Failed writing body (0 != 22)
thumb_up 0 | star_outline 2 | textsms 3