Windows命令提示符中如何正确编写HTTPie请求?
解决Windows CMD中HTTPie POST请求的参数解析错误问题
这个问题在Windows命令提示符里太常见了——CMD的引号解析逻辑和Linux/macOS终端完全不一样,咱们一步步来搞定它:
问题根源
你之前的命令里,author='John Doe'用了单引号,但CMD根本不把单引号当作字符串的边界标记,它会把'John和Doe'当成两个独立的参数,自然就报错了。就算换成双引号,JSON数组里的双引号也会和外层的双引号冲突,导致CMD提前截断字符串。
两种可行的解决方案
方案1:转义JSON里的双引号
在CMD的双引号字符串内部,JSON里的双引号需要用\来转义(注意是两个反斜杠\\,因为CMD本身也会解析一个反斜杠)。正确的命令应该是这样:
http POST http://localhost:1337/api/articles title="TestArticle" author="John Doe" description="lorem ipsum dolar sit amet" images:="[{\\"kind\\":\\"thumbnail\\", \\"url\\":\\"http://habrahabr.ru/images/write-topic.png\\"}, {\\"kind\\":\\"detail\\", \\"url\\":\\"http://habrahabr.ru/images/write-topic.png\\"}]"
方案2:用文件引用JSON内容(更推荐)
如果JSON结构比较复杂,转义会很麻烦,不如把JSON内容单独放到一个文件里:
- 创建一个
images.json文件,内容如下:
[{"kind":"thumbnail", "url":"http://habrahabr.ru/images/write-topic.png"}, {"kind":"detail", "url":"http://habrahabr.ru/images/write-topic.png"}]
- 然后用HTTPie的
@符号引用这个文件,命令就简洁多了:
http POST http://localhost:1337/api/articles title="TestArticle" author="John Doe" description="lorem ipsum dolar sit amet" images:@images.json
这样既避免了转义的麻烦,也让命令更易读,后续修改JSON内容也更方便。
内容的提问来源于stack exchange,提问作者konsul777
相关产品推荐
相关产品推荐

