【导语】:Python实现的HTTP请求命令行客户端,我理解为curl的Python版本,但是提供了更友好,更易使用的命令及选项。
简介
HTTPie是使用Python实现的HTTP命令行工具,提供了更人性化、交互性更好的命令和选项,可以用来做测试、调试以及与HTTP API服务器交互,http和https命令可以用来发送任意的http请求,使用自然简单的语法,提供格式化和颜色输出。
HTTPie具有以下主要功能特点:
1、自然直观的语法
2、可格式化终端输出,包括颜色的区分
3、支持JSON
4、支持表单和文件上传
5、支持HTTPS、代理和身份验证
6、可以发送任意请求数据
7、自定义请求头
8、会话持久化
9、类似wget的下载功能
10、支持Linux、macOS和Windows
11、支持插件
12、完善的文档支持
下载安装
项目源码地址:
https://github.com/httpie/httpie
项目测试
运行环境要求Python3.6版本及以上。Windows平台上的安装需确保setuptools版本是最新的,使用以下命令进行安装:
$ pip install --upgrade pip setuptools
$ pip install --upgrade httpie
其他平台上的安装方法参考项目地址中的readme即可,写得很清晰。同时,HTTPie的官网还提供了一个工具,可以直接在浏览器上执行HTTPie命令,用来尝鲜、测试都很方便。
简单使用
从官网的几个例子来看看HTTPie的用法。
1、这行命令表示,向地址httpbin.org发送PUT请求,自定义请求头为X-API-Token:123,请求数据格式为JSON,具体的键值为name=John。从这个例子可以看得出,http命令后面跟随请求方法(PUT、DELETE、POST等),自定义的请求头用XX:YY的格式表示,JSON数据用XX=YY表示。
http PUT httpbin.org/put X-API-Token:123 name=John
执行结果为:
2、这行命令表示,向地址httpbin.org以表单的方式发送POST请求,-f选项表示表单格式提交数据。
http -f POST httpbin.org/post hello=World
执行结果为:
3、这行命令表示,向地址httpbin.org发送GET请求,-v表示输出整个HTTP请求响应交换的数据(也有其他选项,比如—headers,-h仅打印响应头,--body,-b仅打印响应数据)。如果没有显式指明请求方法,当没有发送数据时,默认为GET方法,当有发送数据时,默认为POST方法。
http -v httpbin.org/get
执行结果为:
4、这行命令表示,向目标地址发送POST请求。我们知道github是需要登录认证的,这也是-a(--auth)这个选项的作用,-a后面紧跟着用户名,在下面命令执行的过程中,会交互式地要求你输入密码。
http -a USERNAME POST https://api.github.com/repos/httpie/httpie/issues/83/comments body='HTTPie is awesome! :heart:'
执行过程为:
5、这行命令表示,向地址httpbin.org上传文件data.json,使用了重定向符号作为文件输入。
http httpbin.org/post < files/data.json
相应地,下载文件并重定向到本地保存的例子如下:
http httpbin.org/image/png > image.png
以上就是官网提供的几个简单例子,但是HTTPie所支持的功能远远不止这些,比如mutipart/form-data的文件上传、HTTP代理转发、分块传输、HTTPS的证书验证、指定SSL版本、格式化输出等许许多多常用、好用的功能,对于经常需要调试HTTP网络的同学来说,这绝对是一个好工具,相比curl,其命令和选项都更加友好,请各位参考官方文档,自己去尝试吧。
开源前哨
日常分享热门、有趣和实用的开源项目。参与维护 10万+ Star 的开源技术资源库,包括:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。