屹今為止最好用的HTTP客戶端命令行工具-接口調試神器HTTPie


一、思考❓❔

1.你用過哪些http客戶端調試工具?

  • Postman

    • 不夠靈活

    • 需要打開客戶端, 麻煩

    • 學習成本高

  • Jmeter

    • 臃腫
    • 麻煩
    • 學習成本高
  • curl

    • 參數多, 記不住
    • 不夠靈活
    • 主要在Linux中使用
    • 學習成本高
  • wget

    • 主要用於命令行下載, 功能單一
    • 參數多, 記不住
    • 主要在Linux中使用

2.有沒有哪種工具可以解決上述所有不足呢?

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

  • 基於命令行
    • 超簡潔、直觀
  • 支持JSON
  • 支持語法高亮、格式化輸出
  • 支持wget下載
  • 支持session會話
  • 支持HTTPS
  • 支持代理、認證
  • 支持表單提交和文件上傳
  • 支持任意獲取請求頭、請求體、響應頭或者響應體
  • 支持Linux, macOS, and Windows平台
  • 等等


二、安裝🔨🔨

1.Linux

  • Ubuntu或者Debian
sudo apt-get install httpie
  • CentOS或者RHEL
sudo yum install httpie

2.Windows

  • 需要先安裝python3
  • 再安裝httpie
# 更新pip到最新版本
pip install --upgrade pip setuptools

# 使用國內源安裝httpie
pip install -i https://pypi.douban.com/simple --upgrade httpie


8.macOS

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.不同的參數類型

  • json
    • 默認
  • form
  • query string
  • header
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.獲取請求和響應信息

  • 獲取響應頭
    • -h
  • 獲取響應體
    • -b
  • 獲取請求頭
    • -p H 或者 --print=H
  • 獲取請求體
    • -p B 或者 --print=B
# 獲取響應頭
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 或者 --auth
    • Basic auth類型的認證才行
  • 同一session會話請求
# 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
  • JWT token認證
# 方法一:
# 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的簡化

  • 如果請求地址為localhost或者127.0.0.1本地地址, 可以省略ip
  • 如果端口號為80, 那么端口號也可省略
# 省略ip, 默認的ip為localhost
http :8000
http :8000/projects/

# 省略ip和端口
# 默認訪問的地址為 http://localhost/
http :
# 默認訪問的地址為 http://localhost/projects/
http :/projects/


三、總結💡💡

  • 本文重點介紹了HTTPie客戶端命令行工具的安裝和常用操作
  • 內容較為完整, 且有案例演示
  • 對於做前后端聯調、接口測試人員有較強的實際意義
  • 本文為可優原創, 如需轉載請聯系本人。有不足之處, 歡迎指點!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM