📅  最后修改于: 2023-12-03 15:06:47.248000             🧑  作者: Mango
如果你正在寻找一种命令行工具来测试 API 端点,并调试网络请求,那么 HTTPie 可能是你想要的解决方案。这是一个为人类设计的友好的 CLI HTTP 客户端,易于使用,支持 JSON,表单数据和文件上传。
HTTPie 不仅以其简洁明了的命令行接口而闻名,同时还包含许多实用的功能,例如跟踪重定向,设置请求头和 cookie,HTTP 压缩和语法突出显示等。
先使用以下命令安装 HTTPie:
$ pip install httpie
HTTPie 安装完成后,就可以开始使用了。下面是一个交互式例子:
$ http -a user:password -b POST https://httpbin.org/post name=John
上述命令执行了如下操作:
如果请求成功,你应该会看到返回的响应数据。
在添加 -j / --json 选项时,HTTPie 可以将请求体呈现为 JSON。
例如:
$ http POST example.com/person \
Content-Type:application/json \
body:='{"firstName": "John", "lastName": "Doe"}'
该命令将在 example.com/person 端点发布 JSON 对象并设置 Content-Type 头为 application/json。
使用 --form 选项可以同时发布表单字段和一个或多个文件。
例如:
$ http -f POST example.com/form \
name=value \
file1@/path/to/file1.png \
file2@/path/to/file2.png
即可将文件 file1.png 和 file2.png 附加到 POST 请求中。
使用 -a 选项可以轻松地进行多项身份验证,但是如何在一条命令中发送多个请求呢?
你可以使用 xargs 将多个 httpie 命令连接在一起。例如,下面的命令将发送两个请求,测试 Google 和 Bing 的响应时间:
$ echo "https://www.google.com https://www.bing.com" | xargs -n 1 http -t HEAD
如果你需要发布相同的请求到多个端点,你可以使用 httpie 的数据传输脚本。
以下是一个使用脚本发布到多个端点的示例:
$ cat endpoints.txt
http://localhost:8080/path1/
http://localhost:8080/path2/
$ echo '{"data": "foo"}' | \
http post http://localhost:8080/path1/ | \
http POST http://localhost:8080/path2/
上面的示例演示了如何将 JSON 请求体发布到端点列表中的每个端点,获取每个端点的响应。
HTTPie 是一个非常实用的命令行工具,它可以帮助你轻松地测试和调试 API 端点,支持多种数据格式处理和多项功能,比如身份验证和文件上传。
使用上面的示例和命令,你应该能够使用 HTTPie 完成绝大部分需要进行 HTTP 请求调试的任务。