這幾天在測試 Line Bot 時需要測試 Web API, 我在 "Python 從網路爬蟲到生活應用超實務" 這本書的第 16 章看到作者使用 Servistate HTTP Editor 這個 Chrome 外掛來測試 API, 但連到官網要下載卻出現 404 錯誤, 不知是何原因 :
但另外找到一個似乎更多人使用的 Postman, 可以下載安裝版, 也提供線上版, 本篇先來玩看看它的線上版 :
按 "Try the Web Version" 鈕輸入 Email 按 "Sign Up for Free" 鈕完成註冊即可使用 :
如果要模擬 404, 505 等回應狀態, 則是在 status 後面串回應碼, 例如 :
參考 :
以下用 Postman 測試最常用的 GET 與 POST 方法, GET 方法是將參數帶在 URL 上向指定的資源請求資料, 因為參數會顯示在網址列, 故主要用於向伺服器查詢 (query) 非機敏的資料; 而 POST 方法則是將參數放在 HTTP 的主體 (BODY) 中傳送, 長度不受限制, 且不會顯示於網址列也不會存放於瀏覽歷史中, 故安全隱密性較高. 參考 :
httpbin.org 網站會將請求標頭的訊息回應給客戶端 (例如瀏覽器, 此處為 Postman 線上測試網頁), 在右上方的欄位中輸入 http://httpbin.org/get 然後按右邊的 "Send" 鈕會在底下顯示 httpbin.org 網站的回應訊息 (預設是用 GET 方法) :
也可以在 URL 後面以 ? 帶參數 (多個參數用 & 串接), 例如 http://httpbin.org/get?a=1&b=2 :
從底下的回應訊息可知, httpbin.org 將收到的 GET 請求中所攜帶的 a, b 兩參數放在 JSON 回應的 args 屬性中傳回給 Postman.
{
"args": {
"a": "1",
"b": "2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": "no-cache",
"Host": "httpbin.org",
"Postman-Token": "b42f6474-9a1d-4a6e-b646-2e9ebb44baab",
"User-Agent": "PostmanRuntime/7.36.1",
"X-Amzn-Trace-Id": "Root=1-65a8983f-490ef05710367ea117cd0fa0"
},
"origin": "54.86.50.139",
"url": "http://httpbin.org/get?a=1&b=2"
}
如果要改用 POST 方法提出請求, 先選擇方法為 POST, 右方欄位輸入 http://httpbin.org/post, 然後點選下方的 body 頁籤, 預設是 none, 選擇 form-data :
然後於 key/value 表格中填入參數 (key) 與其值 (value) :
然後按 "Send" 鈕, 測試網站會將 header 與參數等放在 HTTP 回應中傳回給 Postman :
{
"args": {},
"data": "",
"files": {},
"form": {
"a": "1",
"b": "2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": "no-cache",
"Content-Length": "222",
"Content-Type": "multipart/form-data; boundary=----WebKitFormBoundary4V35IS83sTKv4M6B",
"Host": "httpbin.org",
"Postman-Token": "96aaacdc-2d48-427c-b8fe-65ca675caabc",
"User-Agent": "PostmanRuntime/7.36.1",
"X-Amzn-Trace-Id": "Root=1-65a8d14d-46741ab153db489f4fbba98e"
},
"json": null,
"origin": "54.86.50.139",
"url": "http://httpbin.org/post"
}
因為參數是放在 form-data 中傳送, 故回應時是放在 form 屬性中. 也可以選擇 raw 用 JSON 格式傳送參數 :
回應訊息如下 :
{
"args": {},
"data": "{\"a\": \"1\", \"b\":\"2\"}",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br",
"Cache-Control": "no-cache",
"Content-Length": "19",
"Content-Type": "application/json",
"Host": "httpbin.org",
"Postman-Token": "7402e57e-b9b7-483e-9e03-823486eb3afd",
"User-Agent": "PostmanRuntime/7.36.1",
"X-Amzn-Trace-Id": "Root=1-65a8e0a6-1455d5b1459a311933a63854"
},
"json": {
"a": "1",
"b": "2"
},
"origin": "54.86.50.139",
"url": "http://httpbin.org/post"
}
可見回傳訊息中的 data 與 json 屬性中皆可取得傳送之參數.
參考 :
沒有留言:
張貼留言