如何使用 HTTPie 发送嵌套 JSON 的 POST 请求?

时间:2021-05-17 09:54:18

标签: json cmd httpie

我想从 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 json error

我使用邮递员和它的工作做到了这一点, 但我想知道如何使用 httpie 来做到这一点?

我也在 SOF 和 GitHub 上尝试了可用的解决方案,但无法弄清楚是什么问题。

1 个答案:

答案 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
相关问题