列表
在路由列表頁面,可以清楚看到所有的服務名稱
、主機
、路徑
、服務
、標籤
、建立時間
以及建立者
的資訊,並且可以新增路由以及對既有路由做編輯或刪除的動作。如果對某項路由想知道更詳細的資訊,可以點擊路由名稱,即可得到更詳細的訊息以及監控的資訊。
#
新增路由從網站左邊 Menu 中點選
路由列表
頁面,進入路由列表的畫面。點選右上角的
新增
後,填入相關資訊後送出。
#
欄位配置說明變數 | 類型 | 預設值 | 說明 | 必填 |
---|---|---|---|---|
service_id | string | 服務ID。 | V | |
name | string | 路由名稱。 | V | |
protocols | array of string | ["http","https"] | 路由允許的協定列表。當設定中有 https 時,HTTP 請求會以 HTTPS 回覆。此欄位接受輸入的值為以下其一: grpc 、 grpcs 、 http 、 https 、 tcp 、 tls 、 tls_passthrough 、 udp 。 | V |
methods | array of string | 匹配路由之 HTTP 方法。 例如: GET、 POST ... 等等。 不輸入則代表允許任何 HTTP 方法。 | ||
hosts | array of string | 匹配路由之域名列表。 | ||
paths | array of string | 匹配路由之路徑列表,填入的路徑起始值必須為 / ,例如 /api/v1 。不輸入則代表允許匹配任何路徑。 | ||
headers | array of map | 匹配路由之標頭列表。 可輸入多個 header key-value pairs。 此欄位無法設定 Host 做為標頭,Host 標頭應在 hosts 欄位設定。 | ||
https_redirect_status_code | number | 426 | 當路由的所有設定都匹配,但協定不匹配的時候所回應的狀態碼。 例如:請求的協定是 HTTP 而不是 HTTPS。如果欄位值設定為 301 、 302 、 307 或 308 ,Location 標頭會被 GOC API Gateway 寫入。此欄位接受輸入的值為以下其一: 426、301、302、307、308。 | V |
regex_priority | number | 0 | 當多個路由同時使用正則表達式匹配時,此數值是用來選擇匹配路由的優先度。 當兩個路由匹配,且 regex_priority 欄位值都相同時,將使用較早創建的路由為主 (created_at 欄位時間比較早的)。* 注意:若路由並非使用正則表達式之方式匹配,則不適用此欄位設定,會以較長的路由路徑優先匹配。 | |
strip_path | boolean | false | 當匹配路由之 paths 時,會將此路徑從上游服務請求 URL 中去除。 | V |
path_handling | string | v0 | 控制當傳送請求至上游服務時,如何組合服務、路由、請求之路徑。 此欄位說明請參考 路徑處理演算法。 此欄位接受輸入的值為以下其一: v0 、 v1 。 | |
preserve_host | boolean | false | 當匹配路由設定的 hosts 其中之一 時,會將請求時帶入的 Host 標頭一併往後帶入至上游服務。當此欄位設定為 false 時,上游服務的 Host 標頭將會是服務的 host 欄位值。 | V |
request_buffering | boolean | true | 是否要啟用 request body buffering。 使用 HTTP 1.1 且在使用分塊(chunk)傳輸編碼接收數據的服務上,將此功能關閉(設為 false )可能是有意義的。 | V |
response_buffering | boolean | true | 是否要啟用 response body buffering。 使用 HTTP 1.1 且在使用分塊(chunk)傳輸編碼發送數據的服務上,將此功能關閉(設為 false )可能是有意義的。 | V |
snis | array of record | 匹配路由之SNIs列表。 | ||
sources | array of record | 使用路由串流時,與此路由匹配的傳入連接的 IP 源頭列表。 每個 source 是由 IP (可使用CIDR) 及 port 組成的。 | ||
destinations | array of record | 使用路由串流時,與此路由匹配的傳入連接的IP目標列表。 每個 destination 是由 IP (可使用CIDR) 及 port 組成的。 | ||
tags | array of string | 可填入任意字串來做分類使用。 |
note
service_id 只有從路由列表直接建立路由時才需填寫,若是從服務內容頁面的路由列表來建立路由,則不需自行填寫,會在建立路由時,自動帶入 service_id。
#
路徑處理演算法若 path_handling
欄位選擇 v0
,則會使用 service.path、route.path 以及請求的路徑做為URL的一部分。例如有一個服務路徑為 /s,路由路徑為 /r,請求路徑為 /re,則連接後的路徑為 /s/re。
v1
的行為則是把 service.path 做為前綴,並且忽略路由及請求之起始的斜線,例如有一個服務路徑為 /s,路由路徑為 /r,請求路徑為 /re,則連接後的路徑為 /sre。
兩種方式都會偵測雙斜線,請替換成單斜線。
service.path | route.path | Request | route.strip_path | route.path_handling | 請求路徑 | 代理至上游服務路徑 |
---|---|---|---|---|---|---|
/s | /fv0 | req | false | v0 | /fv0/req | /s/fv0/req |
/s | /fv0 | blank | false | v0 | /fv0 | /s/fv0 |
/s | /fv1 | req | false | v1 | /fv1/req | /sfv1/req |
/s | /fv1 | blank | false | v1 | /fv1 | /sfv1 |
/s | /tv0 | req | true | v0 | /tv0/req | /s/req |
/s | /tv0 | blank | true | v0 | /tv0 | /s |
/s | /tv1 | req | true | v1 | /tv1/req | /s/req |
/s | /tv1 | blank | true | v1 | /tv1 | /s |
/s | /fv0/ | req | false | v0 | /fv0/req | /s/fv0/req |
/s | /fv0/ | blank | false | v0 | /fv0/ | /s/fv01/ |
/s | /fv1/ | req | false | v1 | /fv1/req | /sfv1/req |
/s | /fv1/ | blank | false | v1 | /fv1/ | /sfv1/ |
/s | /tv0/ | req | true | v0 | /tv0/req | /s/req |
/s | /tv0/ | blank | true | v0 | /tv0/ | /s/ |
/s | /tv1/ | req | true | v1 | /tv1/req | /sreq |
/s | /tv1/ | blank | true | v1 | /tv1/ | /s |
#
預覽頁面點擊路由名稱後即會跳出預覽視窗。可以看到路由詳細資訊和其擁有的插件資訊,較為特殊的是有請求統計及監控資訊。
請求統計頁面在選擇日期及API路徑(可填可不填)後按下搜尋鈕即會出現該路由 API請求總次數 及 選擇日期之API請求次數 。
監控頁面在選擇時間區間及填入API路徑(可填可不填)後,點擊右方放大鏡的圖案後,即會顯示此路由底下的平均回應時間以及狀態碼回應次數。
#
編輯及刪除如想對某個特定路由做編輯或刪除可按右邊的動作按鈕。
按下刪除鍵後會出現確認對話視窗,選擇刪除即可刪除。
選擇列表左方的框,再選擇右上角的垃圾筒,可以一次多筆刪除。
note
多筆刪除會直接動作,不會有確認對話框出現。