今天在讀陳會安老師寫的 "Python 從網路爬蟲到生活應用超實務" 第 4-3 節看到 Chrome 擴充功能 Servistate HTTP Editor 的介紹, 此外掛程式可以讓我們很方便地編輯 headers 送出 GET 與 POST 請求. 但到 Chrome 商店搜尋卻找不到, 官網雖然還在, 但按下載鈕卻出現檔案不存在訊息 :
雖然網路上似乎還找得到 CRX 安裝檔, 但我在陳老師另一本書 "Python 從初學到生活應用超實務" 的第 11-3 章找到類似的擴充功能 RestMan, 所以就改用此外掛來測試 HTTP 請求, 這在撰寫爬蟲程式前測試目標網站, 或測試 Web API 時非常有用. 另一款類似軟體是 PostMan, 參考 :
RestMan 是一款 Wen API 測試工具, 提供 GUI 介面可以方便地送出 HTTP 請求與檢視回應, 特別是對於 JSON 回應會予以格式化方便閱讀.
安裝 Chrome 擴充功能要先按 Chrome 右上角那三個垂直的點點按鈕, 然後點選 "擴充功能", 再點選 "前往 Chrome 線上應用程式商店" :
在線上商店右上角的搜尋框輸入 "RestMan" 後按 Enter 就可搜尋到此程式, 按一下此項目進入該擴充功能說明網頁, 按 "加到 Chrome" 鈕即安裝完成 :
這時按網址列後面的擴充功能按鈕會出現已安裝的擴充功能選單 :
按 RestMan 右邊的圖釘按鈕就可以將其固定在工具列上 :
按此 RestMan 鈕會開啟新頁籤載入 RestMan 網頁, 在上面 URL 框輸入 httpbin 網址 :
# http://httpbin.org/get
httpbin 提供 HTTP 請求與回應服務, 它支援所有 HTTP 動詞, 採用 RESTful 方式制定了一套請求規則, 會將客戶端的請求 Echo 回應回去客戶端, 參考 :
所以如果輸入上面的 GET 請求網址, httpbin 會將請求標頭資訊以 JSON 格式回應 :
底下是其回應內容, 回應本體內回傳的是 JSON 資料 :
也可以在網址中附帶參數, 例如 :
回應本體內容為 :
{
"args": {
"a": "1",
"b": "2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-661a9571-7ed4415e244b3df3611c5a0e"
},
"origin": "218.166.67.66",
"url": "http://httpbin.org/get?a=1&b=2"
}
可見 httpbin 把請求標頭中的 a, b 兩參數放在 JSON 回應中的 args 參數中傳回來.
下面改用 POST 方法傳送 JSON 資料給伺服器 :
請求本體部分選擇 RAW 並輸入 {"a": "1", "b": "2"}, 右下角選 JSON :
{
"args": {},
"data": "{\"a\": \"1\", \"b\": \"2\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh-TW,zh;q=0.9,en-US;q=0.8,en;q=0.7",
"Content-Length": "20",
"Content-Type": "text/plain;charset=UTF-8",
"Host": "httpbin.org",
"Origin": "chrome-extension://ihgpcfpkpmdcghlnaofdmjkoemnlijdi",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-661a97e0-2d34bcfa008b02ba1c127243"
},
"json": {
"a": "1",
"b": "2"
},
"origin": "218.166.67.66",
"url": "http://httpbin.org/post"
}
可見參數是放在 data 與 json 屬性中傳回來.
參考 :
沒有留言:
張貼留言