使用HTTPie发送嵌套的JSON对象



我正在尝试使用HTTPie来解析以发送一些嵌套的JSON对象,但我找不到如何发送。很清楚如何发送JSON对象,而不是像这样的嵌套对象

{"user":{"name":"john"年龄":10}}

2022年1月发布的HTTPie 3.0更新:

现在内置了对使用HTTPie语言的嵌套JSON的支持:

$ http pie.dev/post 
  tool[name]=HTTPie 
  tool[about][homepage]=httpie.io 
  tool[about][mission]='Make APIs simple and intuitive' 
  tool[platforms][]=terminal 
  tool[platforms][]=desktop 
  tool[platforms][]=web 
  tool[platforms][]=mobile 
{
    "tool": {
        "name": "HTTPie",
        "about": {
            "mission": "Make APIs simple and intuitive",
            "homepage": "httpie.io"
        },
        "platforms": [
            "terminal",
            "desktop",
            "web",
            "mobile"
        ]
    }
}

您可以在文档中了解有关嵌套JSON的更多信息:https://httpie.io/docs/cli/nested-json


HTTPie 3.0以上版本的旧答案:

您可以通过stdin:传递整个JSON

$ echo '{ "user": { "name": "john", "age": 10 } }' | http httpbin.org/post

或者使用:=:将原始JSON指定为值

$ http httpbin.org/post user:='{"name": "john", "age": 10 }'

我喜欢这种方式:

$ http PUT localhost:8080/user <<<'{ "user": { "name": "john", "age": 10 }}'

它是首选的,因为它与相关命令具有相同的前缀,因此在bash:中查找带有Ctrl+R的命令很方便

$ http localhost:8080/user/all
$ http GET localhost:8080/user/all # the same as the previous
$ http DELETE localhost:8080/user/234

如果您有fishshell,它没有Here Strings,我可以提出以下解决方法:

~> function tmp; set f (mktemp); echo $argv > "$f"; echo $f; end
~> http POST localhost:8080/user < (tmp '{ "user": { "name": "john", "age": 10 }}')

httpie文档中提到的另一种方法是使用JSON文件;对于更详细、嵌套更深的有效载荷,这对我来说效果很好。

http POST httpbin.org/post < post.json

在Windows 10(cmd.exe)上,由于引用规则,语法略有不同。属性/字符串需要用双引号括起来。

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发送整个对象,而不需要双重引用。

echo {"address": {"city":"london"} } | http -v post https://postman-echo.com/post

相关内容

  • 没有找到相关文章

最新更新