測試及偵錯
測試及偵錯的功能可以幫助使用者在使用 API Gateway 時若發生問題,可以更簡單的進行除錯。
透過視覺化的方式來呈現每次測試的結果、經過的服務、路由、插件,若該次請求被插件所阻擋,也會清楚地顯示是被哪一個套件所阻擋、以及對應的錯誤訊息。
以下分成兩個區塊來說明:請求區塊 (Request)、回應區塊 (Response)。
#
請求區塊請求區塊範圍如下圖:
最上排的請求輸入框,由左到右分別是:方法(Method)、API Gateway Proxy URL、API 路徑(API Uri/Path)。
- 方法(Method): 選擇 HTTP Method,像是 GET、POST、PUT、DELETE、PATCH。(必填)
- API Gateway Proxy URL: 預設會帶入「快速設定#API Gateway 設定區塊」中所填寫的 Proxy URL。若無設定過 Proxy URL,則需重新填入目前環境的 GOC API Gateway 用來做 Proxy 請求轉導的 URL。如上圖,環境的請求是透過呼叫
http://10.112.1.3:31215/
來存取後方服務,所以就填入http://10.112.1.3:31215/
,如果 API Gateway Proxy URL 已經有對應的 FQDN,也可以在這個欄位填入 Protocol+FQDN。(必填) - API 路徑(API Uri/Path): 需填入要呼叫的路徑,若無,則留空。(非必填)
若偵測目前指定的服務其下任一路由有設定 域名(Hosts)
欄位的話,便會出現下圖的圖示,提醒測試的時候請求要加上 x-api-host
header:
請求設定包含了以下三種設定: Query Params、Headers、Body,可以切換頁籤編輯。
note
若請求區塊畫面範圍過大,可以在編輯完後點擊右上角的摺疊符號來縮減區塊畫面。
#
Query ParamsQuery Params 可以在點擊 「 Add Parameter 」之後,於下方雙擊對應欄位編輯,填入對應的值。
左方的勾選框可以彈性選擇該次請求想要使用的 Query Param,要移除 Query Param 的話,可以點選最右方的 X 圖示。
#
HeadersHeaders 可以在點擊 「 Add Header 」之後,於下方雙擊對應欄位編輯,填入對應的值。
左方的勾選框可以彈性選擇該次請求想要使用的 Header,要移除 Header 的話,可以點選最右方的 X 圖示。
#
BodyBody 的部分支援的種類如下圖。
#
none不帶任何 body。
#
form-data若為單純的文字類型,在填入 Key 值之後,額外填入 「(TEXT) VALUE」 欄位即可。
若為檔案類型,則在填入 Key 值之後,點選 「(FILE) VALUE」 欄位的選擇檔案按鈕,再選定檔案即可。
左方的勾選框可以彈性選擇該次請求想要使用的 Parameter,要移除 Parameter 的話,可以點選最右方的 X 圖示。
#
x-www-form-urlencoded可以自行設定 Key 以及 Value。
左方的勾選框可以彈性選擇該次請求想要使用的 Parameter,要移除 Parameter 的話,可以點選最右方的 X 圖示。
#
raw可以選擇輸入的文字格式,如下圖,目前支援的格式有: Text、Javascript、JSON、HTML、XML。
選擇格式後,就可以在輸入區塊填入任意文字。
#
binary可以自行選擇要上傳的檔案。
在請求設定都填妥之後,按下「送出」後,就會協助發送請求,送出按鈕右方會有一個眼睛的圖案,將滑鼠移至上方,便會看到最後一次送出請求的內容,包含 headers、params、data,可以透過此功能來確認請求內容是否正確。
#
回應區塊回應區塊如下圖:
在收到回應後,畫面會將最新的回應順序排在前面,並且左方會有一個圖示標註著「NEW」。
每個回應會顯示 3 個基本的資訊:狀態 (Status)、方法(Method)、API 路徑(Uri)。
可以任意展開每個回應,查看更細節的回應內容,如下圖,若視覺化圖片區塊無法完整呈現,可以自行滑動畫面,就可以看到全部的設定了。
回應內容區塊從上至下,可分為拓樸設定視覺化、請求內容/回應內容。
#
拓樸視覺化拓樸視覺化的部分可以幫助使用者快速看出目前的服務、路由設定,以及插件之間的關係。
可以透過每個物件上的編輯按鈕,導頁至對應物件編輯內容的頁面。
可將滑鼠移至放大鏡的圖示上,就可以查看目前 服務/路由/插件 的內容。
插件/全域插件可以從下圖的圖示區分,「全域」插件會多了一個地球的圖示,且因為插件可以自行啟用/禁用,所以在右上角也會顯示目前插件的狀態,若為勾 (v),則是啟用,若為叉 (x),則是已經禁用。
note
全域插件的作用範圍是任何服務、路由,所以請求有可能被全域插件阻擋。
一般的插件作用範圍會依照創立的時候是從:
(1) 服務編輯頁面去新增插件
(2) 路由編輯頁面去新增插件
而有作用範圍的不同。
該次請求匹配的服務、路由,在拓樸內會對應上色,插件的部分在處理完畢後,也會對應上色,因此可以很容易地從拓樸圖中查看到該次請求的處理細節。
如下圖範例,可以從畫面中很清楚的看到,該次請求所匹配的路由是 goc
,而不是 goc2
。
再使用其他圖片來說明,若收到了 401 Unauthorized 的回應,深入查詢回傳原因可以由拓樸圖中得知,並不是被 GOC API Gateway 的插件阻擋 (插件部分已全數上色,代表通過插件檢查及處理),401 Unauthorized 是直接由後端服務回傳的結果。
若該此請求的回應遭受到插件所阻擋,那對應阻擋的插件就會用紅色的背景顯示,並且多了一個紅色的驚嘆號,如下圖,可以得知回傳 401 Unauthorized 的原因是因為沒有滿足 acl 插件的設定,所以在 GOC API Gateway 端被擋下。
#
請求/回應詳細內容請求詳細內容的部分會顯示該次請求的細節資訊,如下圖。
回應詳細內容的部分會顯示該次回應的細節資訊,如下圖。
若回應內容目前格式不好閱讀,可以開啟「Body 排版美化」功能,協助把 body 內容排版為更易閱讀的格式。
#
常見問題- 回應 Status 為 Network Error,且回應詳細內容如下:
請先確認:
- 目前網路狀態是否正常。
- 後端服務狀態是否良好。
- 是否為 CORS 問題,若為 CORS 問題,可參閱 CORS 說明頁面 來啟用插件。