1、Httpbin服務介紹
Httpbin
是使用Python + Flask
語言編寫的一個HTTP Request & Response Service
的簡單服務,該服務主要用於測試 HTTP 請求,你可以向他傳送請求,然後他會按照指定的規則將你的請求返回(檢視你所傳送請求中的全部請求資訊和響應資訊)。
Httpbin
支援HTTP/HTTPS請求,支援所有的HTTP動詞,能測試HTTP請求和響應的各種資訊,比如 cookie
、ip
、headers
和登入驗證等。能模擬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工具安裝
需要分別安裝Httpbin
與guicorn
,guicorn
是一個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伺服器或者虛擬機器的地址。
如下圖所示:
這樣我們就可以在本地使用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/
,就會出現如下介面。
頁面中每個選項都可以點開,裡邊有對應的介面說明。
常用介面列表:
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
服務就是幹什麼用的?
就是用於檢視我發出去的請求到底是什麼樣子的。你需要檢視請求中的哪一部分資訊,就呼叫什麼樣的介面即可。