我想从 Windows shell
使用 HTTPie 发送 POST 请求JSON 输入看起来像:
{
"name": "pub1",
"email": "support@pub1.com",
"address": {
"city": "new york",
"pincode": 12345
}
}
我试过了:
http -v POST http://127.0.0.1:8000/publication/ name=pub1 email=support@pub1.com address:="{"city":"new york", "pincode":12345}"
它给出以下错误:
http: error: "address:={city: new": Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
我使用邮递员和它的工作做到了这一点, 但我想知道如何使用 httpie 来做到这一点?
我也在 SOF 和 GitHub 上尝试了可用的解决方案,但无法弄清楚是什么问题。
答案 0 :(得分:2)
Windows shell 引用规则不同,因此您不能像所有 osx/linux 示例那样将 :='<json>'
与单引号一起使用,您需要双引号。
您收到的错误消息说“期望用双引号括起来的属性名称”,但这很令人困惑,因为它 肉眼看不到双引号。 >
转义 json 文字中的双引号就可以做到这一点。您可以通过将引号字符加倍来实现这一点,如 ""
。
"city"
=> ""city""
http -v post https://postman-echo.com/post address:="{""city"":""london""}"
POST /post HTTP/1.1
Content-Type: application/json
Host: postman-echo.com
User-Agent: HTTPie/2.3.0
{
"address": {
"city": "london"
}
}
如果您愿意,您还可以使用 echo 技巧来避免所有引用。此方法类似于使用文件,因此您指定整个 json 文档,而不是单个字段。
echo {"address": {"city":"london"} } | http -v post https://postman-echo.com/post