HTTPie(发音为aitch-tee-tee-pie)是一个命令行HTTP客户端。其目标是使CLI与Web服务的交互尽可能对人类友好。HTTPie设计用于测试,调试,并通常与API和HTTP服务器交互。在http
与https
命令允许创建和发送任意HTTP请求。它们使用简单自然的语法,并提供格式化和彩色输出。
1.主要特点
- 富有表现力和直观的语法
- 格式化和彩色的终端输出
- 内置JSON支持
- 表格和文件上传
- HTTPS,代理和身份验证
- 任意请求数据
- 自定义标题
- 持续性会议
- 类似于Wget的下载
- Linux,macOS和Windows支持
- 外挂程式
- 文献资料
- 测试范围
2.安装
2.1 macOS
在macOS上,可以通过Homebrew安装HTTPie (推荐):
$ brew install httpie
MacPorts端口也可用:
$ port install httpie
2.2 Linux
大多数Linux发行版都提供可以使用系统软件包管理器安装的软件包,例如:
# Debian, Ubuntu, etc. $ apt install httpie # Fedora $ dnf install httpie # CentOS, RHEL, ... $ yum install httpie # Gentoo $ emerge httpie # Arch Linux $ pacman -S httpie
2.3 Windows等
通用安装方法(可在Windows,Mac OS X,Linux等上运行,并且始终提供最新版本)是使用pip:
# Make sure we have an up-to-date version of pip and setuptools: $ python -m pip install --upgrade pip setuptools $ python -m pip install --upgrade httpie
(如果pip
由于某种原因安装失败,您可以尝试 easy_install httpie
作为备用。)
2.4 Python版本
需要Python 3.6或更高版本。
2.5不稳定版本
您也可以直接从master
GitHub上的分支安装最新的未发布开发版本。它是未来稳定版本的正在进行中,因此体验可能不太顺利。
在macOS上,您可以使用Homebrew安装它:
$ brew uninstall --force httpie
$ brew install --HEAD httpie
否则pip
:
$ pip install --upgrade https://github.com/httpie/httpie/archive/master.tar.gz
验证现在我们具有 带后缀的 当前开发版本标识符-dev
,例如:
$ http --version
# 2.0.0-dev
3.用法
你好,世界:
$ https httpie.io/hello
概要:
$ http [flags] [METHOD] URL [ITEM [ITEM]]
另请参阅http --help
。
4范例
自定义HTTP方法,HTTP标头和JSON数据:
$ http PUT pie.dev/put X-API-Token:123 name=John
提交表格:
$ http -f POST pie.dev/post hello=World
查看使用输出选项之一发送的请求:
$ http -v pie.dev/get
构建并打印请求,而无需使用离线模式发送请求:
$ http --offline pie.dev/post hello=offline
使用GitHub的API发布上的评论 问题 与身份验证:
$ http -a USERNAME POST https://api.github.com/repos/httpie/httpie/issues/83/comments body='HTTPie is awesome! :heart:'
使用重定向输入上传文件:
$ http pie.dev/post < files/data.json
下载文件并通过重定向输出保存:
$ http pie.dev/image/png > image.png
下载文件wget
样式:
$ http --download pie.dev/image/png
使用命名会话可以使通信的某些方面在同一主机的请求之间保持不变:
$ http --session=logged-in -a username:password pie.dev/get API-Key:123
$ http --session=logged-in pie.dev/headers
设置自定义Host
标头以解决丢失的DNS记录:
$ http localhost:8000 Host:example.com
5.HTTP方法
HTTP方法的名称恰好在URL参数之前:
$ http DELETE pie.dev/delete
看起来与实际Request-Line
发送的相似:
DELETE /delete HTTP/1.1
当METHOD
命令中省略参数时,HTTPie默认为GET
(无请求数据)或POST
(有请求数据)。
6.请求网址
HTTPie执行请求所需的唯一信息是URL。
默认方案是http://
并且可以从参数中省略:
$ http example.org
# => http://example.org
HTTPie还安装了一个https
可执行文件,其默认方案为https://
:
$ https example.org
# => https://example.org
6.1查询字符串参数
如果您发现自己在终端上手动构造带有querystring参数的URL,则可能会喜欢param==value
附加URL参数的语法。
这样,您就不必担心转义&
分隔符为您的外壳。此外,参数名称或值中的任何特殊字符都将自动转义URL(与完整URL中指定的参数相反,HTTPie不会修改该参数)。
$ http https://api.github.com/search/repositories q==httpie per_page==1
GET /search/repositories?q=httpie&per_page=1 HTTP/1.1
localhost
6.2 URL快捷方式
此外,还支持localhost的curl-like速记。这意味着,例如,:3000
将扩展为http://localhost:3000
如果省略端口,则假定端口为80。
$ http :/foo
GET /foo HTTP/1.1
Host: localhost
$ http :3000/bar
GET /bar HTTP/1.1
Host: localhost:3000
$ http :
GET / HTTP/1.1
Host: localhost
6.3其他默认方案
调用HTTPie时https
,默认方案为https://
($ https example.org
将向发送请求https://example.org
)。
您还可以使用该--default-scheme <URL_SCHEME>
选项为HTTP(可能通过插件支持)以外的其他协议创建快捷方式。httpie-unixsocket插件的示例:
# Before
$ http http+unix://%2Fvar%2Frun%2Fdocker.sock/info
# Create an alias
$ alias http-unix='http --default-scheme="http+unix"'
# Now the scheme can be omitted
$ http-unix %2Fvar%2Frun%2Fdocker.sock/info
--path-as-is
6.4
HTTP客户端的标准行为是通过压缩点段来标准化URL的路径部分,就像通常的文件系统将那样:
$ http -v example.org/./../../etc/password
GET /etc/password HTTP/1.1
该--path-as-is
选项允许您禁用此行为:
$ http --path-as-is -v example.org/./../../etc/password
GET /../../etc/password HTTP/1.1