屹今为止最好用的 HTTP 客户端命令行工具 - 接口调试神器 HTTPie

本贴最后更新于 1695 天前,其中的信息可能已经时移世易

一、思考❓❔

1.你用过哪些http客户端调试工具?

image.png


2.有没有哪种工具可以解决上述所有不足呢?

image.png

史上最好用的HTTP客户端命令行工具——HTTPie



二、安装??

image.png

1.Linux

sudo apt-get install httpie
sudo yum install httpie

2.Windows

# 更新pip到最新版本 pip install --upgrade pip setuptools # 使用国内源安装httpie pip install -i https://pypi.douban.com/simple --upgrade httpie


8.macOS

image.png

brew install httpie


三、常用操作????

1.语法格式

http [flags] [METHOD] URL [ITEM [ITEM]]

2.默认操作

# http url, 不带任何参数默认为GET请求 http http://localhost:8000/ # http url 参数名=参数值, 默认为POST请求 # 且以json格式来传递(Content-Type为application/json) # 默认也接收json格式的数据(Accept为application/json, */*) http http://localhost:8000/user/login/ username=lemon1 password=123456

3.不同的参数类型

Item Type 描述
Name:Value 请求头, 例如: X-API-Token:123
name==value url查询字符串参数
field=value, field=@file.txt JSON(默认)或者-j
--form或者-f为form表单传参
field:=json, field:=@file.json 传递json的 Boolean, Number, 嵌套对象, Array类型
例如: meals:='["ham","spam"]' 或者 pies:=[1,2,3]
field@/dir/file 以form表单来上传文件
--form, -f. screenshot@~/Pictures/img.png
# 以json格式的字符串来传参(默认) http POST http://localhost:8000/user/login/ username=lemon1 password=123456 # 以form表单来传参 http -f POST http://localhost:8000/user/login/ username=lemon1 password=123456 # 或者 http --form POST http://localhost:8000/user/login/ username=lemon1 password=123456 # 请求头中的Content-Type为application/x-www-form-urlencoded; charset=utf-8 # 以查询字符串参数形式来传参 http -v http://localhost:8000/user/login/ username==lemon1 password==123456 # 请求头中的请求首行为GET /user/login/?username=lemon1&password=123456 HTTP/1.1 # 传递请求头参数 http http://localhost:8000/user/login/ username=lemon1 password=123456 User-Agent:"Mozilla/5.0 KeYou" # 查看请求头中的User-Agent参数为 User-Agent: Mozilla/5.0 KeYou

4.获取请求和响应信息

# 获取响应头 http -h http://localhost:8000/user/login/ username=lemon1 password=123456 # 获取响应体 http -b http://localhost:8000/user/login/ username=lemon1 password=123456 # 获取响应头和响应体(默认) http http://localhost:8000/user/login/ username=lemon1 password=123456 # 或者 http -p hb http://localhost:8000/user/login/ username=lemon1 password=123456 # 获取请求头 http -p H http://localhost:8000/user/login/ username=lemon1 password=123456 # 获取请求体 http -p B http://localhost:8000/user/login/ username=lemon1 password=123456 # 获取请求头和请求体 http -p BH http://localhost:8000/user/login/ username=lemon1 password=123456

5.认证

# a.将会话文件保存在指定路径 # 注: Windows中的路径是以\进行分割的, linux中为/ http --session=~\s1.json -a lemon1:123456 -p Hh http://localhost:8000/api/login/ # 登录的session会话, 会保存在家目录下的s1.json文件中 # b.命名会话 http --session=s2 -a lemon1:123456 -p Hh http://localhost:8000/api/login/ # 会话命名为s2 # Windows系统中会话保存在%APPDATA%\httpie\sessions\<host>\<name>.json文件 # c. 后续直接使用同一会话去请求 http --session=~\s1.json http://localhost:8000/projects/ page==2 size==2 http --session=s2 http://localhost:8000/projects/ page==2 size==2
# 方法一: # a. 先登录获取token http http://localhost:8000/user/login/ username=lemon1 password=123456 # 响应体中有token值 http http://localhost:8000/projects/ page==2 size==2 Authorization:"JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxNiwidXNlcm5hbWUiOiJsZW1vbjEiLCJleHAiOjE1NzA3NTIyMzksImVtYWlsIjoia2V5b3UwQHFxLmNvbSJ9.p7az1upstXTf-IHHigiISymkz6-Q_O4DC3ouLXnLqLY" # b. 可以将JWT设置为环境变量 # 可以使用Windows平台下的git bash来设置环境变量 export TOKEN1='eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxNiwidXNlcm5hbWUiOiJsZW1vbjEiLCJleHAiOjE1NzA3NTIyMzksImVtYWlsIjoia2V5b3UwQHFxLmNvbSJ9.p7az1upstXTf-IHHigiISymkz6-Q_O4DC3ouLXnLqLY' # c. 后续直接使用同一token去请求 http -p Hh http://localhost:8000/projects/ page==2 size==2 Authorization:"JWT ${TOKEN1}" # 方法二: # 可以通过安装httpie-jwt-auth插件来简单高效, 处理JWT认证 # a. 安装 pip install -i https://pypi.douban.com/simple httpie-jwt-auth # b. 使用 http --auth-type=jwt --auth="你的token" 你的url地址 # 默认使用Bearer前缀, 也可以指定其他前缀 JWT_AUTH_PREFIX=JWT http --auth-type=jwt --auth="你的token" 你的url地址 # c. 最简单的方法为 # 设置环境变量, 简化token的传递 export JWT_AUTH_TOKEN='你的token' export JWT_AUTH_PREFIX='JWT' http --auth-type=jwt :8000/projects/ page==2 size==2 # --auth-type可以缩写为-A http -A jwt :8000/projects/ page==2 size==2

6.下载

# 下载资源, 使用--download # 类似于wget http --download http://localhost:8000/projects/ page==2 size==2 Authorization:"JWT ${JWT1}"

7.请求地址为localhost的简化

# 省略ip, 默认的ip为localhost http :8000 http :8000/projects/ # 省略ip和端口 # 默认访问的地址为 http://localhost/ http : # 默认访问的地址为 http://localhost/projects/ http :/projects/


三、总结??

image.png

image.png

回帖
请输入回帖内容 ...