Windows下curl报错:curl: (3) unmatched close brace/bracket in URL position x

问题

之前都是使用 postman 或 Apifox 测试接口,或者在 Linux 上使用 curl 命令测试接口,偶然在 windows 电脑上使用了 curl 命令测试接口,竟然报错 curl: (3) unmatched close brace/bracket in URL position x,如下图所示:

报错

一开始以为参数使用不当,后来反复对比下方的 curl 标准用法,并没有什么区别。

curl -X POST \
     -H "Content-Type: application/json" \
     -d '{"key": "value"}' \
     http://example.com/api/data

解释

  • -X POST: 指定请求方法为 POST。
  • -H "Content-Type: application/json": 设置请求头中的 Content-Type 为 application/json,这告诉服务器请求体中的数据是 JSON 格式。
  • -d '{"key": "value"}': 设置请求体数据为 JSON 字符串 { “key”: “value” }。

使用 --data-raw 或 -d
如果 JSON 数据中包含特殊字符,可能需要使用 --data-raw-d 选项来避免对数据进行 URL 编码,这是不必要的。

原因

查询一番后,发现在 Windows 的命令行(cmd),curl 命令的语法与 Linux/Unix 稍有不同,主要表现在对引号的处理上。Windows 命令行不支持单引号作为字符串的定界符,需要使用双引号代替。

例如,如果在 Linux 上使用如下的 curl 命令:

curl -X POST -H 'Content-Type: application/json' -d '{"key1":"value1", "key2":"value2"}' http://example.com/api

解决办法1

在 Windows 上,则需要将单引号换成双引号,Windows 中的双引号包裹的字符串如果本身包含双引号(如 JSON 中的键值对),则这些内嵌的双引号需要进行转义,使用反斜杠 \ 进行转义。

curl -X POST -H "Content-Type: application/json" -d "{\"key1\":\"value1\", \"key2\":\"value2\"}" http://example.com/api

转义

解决办法2

使用 Gitbash,支持 linux 命令语法:

gitbash

解决办法3

使用文件存储 json 数据,将 a 存入add-field.txt,在文件所在目录执行下列命令:

curl -X POST -H "Content-Type: application/json" --data-binary @add-field.txt http://localhost:5000/process_data

文件存储json数据

如果还有更好的方法,欢迎留言讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderJia_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值