『居善地』介面測試 — 6、Httpbin服務介紹

繁華似錦Fighting發表於2021-05-20

1、Httpbin服務介紹

Httpbin是使用Python + Flask語言編寫的一個HTTP Request & Response Service的簡單服務,該服務主要用於測試 HTTP 請求,你可以向他傳送請求,然後他會按照指定的規則將你的請求返回(檢視你所傳送請求中的全部請求資訊和響應資訊)。

Httpbin支援HTTP/HTTPS請求,支援所有的HTTP動詞,能測試HTTP請求和響應的各種資訊,比如 cookieipheaders 和登入驗證等。能模擬302跳轉乃至302跳轉的次數,還可以返回一個HTML檔案或一個XML檔案或一個圖片檔案(還支援指定返回圖片的格式)。

Httpbin介面地址:http://httpbin.org/或者https://httpbin.org/

Httpbin開源地址:https://github.com/postmanlabs/httpbin

2、在Windows系統中部署Httpbin服務

Httpbin是部署在國外的,考慮到有時無法訪問的情況,也是可以自己在本地搭建部署,非常簡單。

這樣本地部署Httpbin的方式,可以不用和外部的伺服器互動就可以進行HTTP業務的除錯。

(1)通過pip工具安裝

需要分別安裝Httpbinguicornguicorn是一個wsgi http伺服器,用來啟動Httpbin服務。

# 進入cmd命令列,執行如下命令:
# 安裝Httpbin與guicorn
pip install gunicorn
pip install httpbin

# 執行如下命令啟動服務:
gunicorn httpbin:app  

注意:這種方式在Windows系統下不能使用,報錯ImportError: No module named 'fcntl'。(網上查的原因是fcntl模組在Windows環境下不被識別)

(2)本地安裝Httpbin

# 從github上克隆Httpbin到本地
# 會直接克隆到cmd命令的當前目錄下,如C:\Users\L>下執行的命令。
git clone https://github.com/Runscope/httpbin.git

# 安裝httpbin命令
pip install -e httpbin

# 啟動httpbin服務命令
python -m httpbin.core [--port=PORT] [--host=HOST]
# 例如:訪問方位為:http://127.0.0.1:9999/get
python -m httpbin.core --port=9999

親測:在Windows系統下,這種方式能在本地正常啟動Httpbin服務。

3、在Linux系統中部署Httpbin服務

Linux系統中我們通常使用Docker的方式部署Httpbin服務,這樣非常的方便簡單。

一共只有兩步就可以完成:第一,拉取映象;第二,啟動映象。

(關於Docker的安裝,請看Docker部分的相關文章,這裡就不在介紹了)

(1)拉取Httpbin服務的Docker映象到本地

[root@localhost ~]# docker pull kennethreitz/httpbin
Using default tag: latest
latest: Pulling from kennethreitz/httpbin
473ede7ed136: Pull complete 
c46b5fa4d940: Pull complete 
93ae3df89c92: Pull complete 
6b1eed27cade: Pull complete 
0373952b589d: Pull complete 
7b82cd0ee527: Pull complete 
a36b2d884a89: Pull complete 
Digest: sha256:599fe5e5073102dbb0ee3dbb65f049dab44fa9fc251f6835c9990f8fb196a72b
Status: Downloaded newer image for kennethreitz/httpbin:latest
docker.io/kennethreitz/httpbin:latest

(2)啟動本地Httpbin服務的Docker映象

[root@localhost ~]# docker run -p 80:80 kennethreitz/httpbin
[2021-05-20 02:13:00 +0000] [1] [INFO] Starting gunicorn 19.9.0
[2021-05-20 02:13:00 +0000] [1] [INFO] Listening at: http://0.0.0.0:80 (1)
[2021-05-20 02:13:00 +0000] [1] [INFO] Using worker: gevent
[2021-05-20 02:13:00 +0000] [9] [INFO] Booting worker with pid: 9

當然我們可以後臺執行Docker映象,執行命令:docker run -d -p 9999:80 kennethreitz/httpbin

(3)瀏覽器中訪問本地Httpbin服務

192.168.134.129為Linux伺服器或者虛擬機器的地址。

如下圖所示:

image

這樣我們就可以在本地使用Httpbin介面服務了,速度會非常的快。

4、Httpbin訪問方式

Httpbin的使用方法非常簡單,你只需要把請求的地址修改為httpbin.org即可。

例如GET請求:http://httpbin.org/get

如果使用本地部署的Httpbin服務,訪問:http://127.0.0.1:[自己設定的埠號]/請求路徑

(請看上邊第2點)

5、Httpbin常用除錯介面

訪問:http://httpbin.org/#/或者本地Httpbin服務http://127.0.0.1:9999/,就會出現如下介面。

頁面中每個選項都可以點開,裡邊有對應的介面說明。

image

常用介面列表

Endpoint Descirption
/ip 返回請求者的IP地址。
/user-agent 返回傳入請求的User-Agent引數。
/headers 返回傳入請求的請求頭引數。
/get GET請求的提交引數。
/post POST請求的提交引數。
/patch PATCH請求的提交引數。
/put PUT請求的提交引數。
/delete DELETE請求的提交引數。

舉例

(1)返回headers資訊

# 呼叫介面:https://httpbin.org/headers
{
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "zh-CN,zh;q=0.9", 
    "Host": "httpbin.org", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-5ff1a4f7-69a84fca0693b09e28d214b0"
  }
}

(2)返回訪問此連結的IP地址

# 呼叫介面:https://httpbin.org/ip
{
  "origin": "106.35.9.12"
}

(3)返回GET請求的詳細資訊

# 呼叫介面:https://httpbin.org/get?department=1
{
  "args": {
    "department": "1"
  }, 
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "zh-CN,zh;q=0.9", 
    "Host": "httpbin.org", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3775.400 QQBrowser/10.6.4209.400", 
    "X-Amzn-Trace-Id": "Root=1-5ff1a59b-4e514a40023721d276ae07eb"
  }, 
  "origin": "106.35.9.12", 
  "url": "https://httpbin.org/get?department=1"
}

說明:如果需要看Httpbin服務POST如何使用,請看requests庫POST請求的學習文章。

6、總結:

Httpbin服務就是幹什麼用的?

就是用於檢視我發出去的請求到底是什麼樣子的。你需要檢視請求中的哪一部分資訊,就呼叫什麼樣的介面即可。

相關文章