本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 API Gateway 中建立 HTTP API 的路由
將直接傳入的 API 請求路由到後端資源。路由由兩部分組成:HTTP 方法和資源路徑,例如 GET /pets。您可以為您的路由定義特定的 HTTP 方法。或者,您可以使用 ANY 方法來比對您尚未為資源定義的所有方法。您可以建立一個 $default 路由,充當不與任何其他路由搭配的請求的全部捕獲。
注意
API Gateway 會先解碼 URL 編碼的請求參數,然後再將其傳遞至後端整合。
使用路徑變數
您可以在 HTTP API 路由中使用路徑變數。
例如,GET /pets/{petID} 路由會擷取用戶端提交給 https:// 的 api-id.execute-api.us-east-2.amazonaws.com/pets/6GET 請求。
Greedy 路徑變數會擷取路由的所有子資源。若要建立 Greedy 路徑變數,請將 + 新增至變數名稱,例如 {proxy+}。Greedy 路徑變數必須位於資源路徑結尾。
使用查詢字串參數
根據預設,API Gateway 會將查詢字串參數傳送至您的後端整合 (如果它們包含在對 HTTP API 的請求中)。
例如,當用戶端傳送要求給 https:// 時,查詢字串參數 api-id.execute-api.us-east-2.amazonaws.com/pets?id=4&type=dog?id=4&type=dog 會傳送至您的整合。
使用 $default 路由
$default 路由會擷取未明確與 API 中其他路由相符的請求。
當 $default 路由收到請求時,API Gateway 會將完整的請求路徑傳送到整合。例如,您可以建立僅使用 $default 路由的 API,並將其與 https://petstore-demo-endpoint.execute-api.com HTTP 端點整合在 ANY 方法上。當您將請求傳送給 https:// 時,API Gateway 會將請求傳送給 api-id.execute-api.us-east-2.amazonaws.com/store/checkouthttps://petstore-demo-endpoint.execute-api.com/store/checkout。
若要進一步了解 HTTP 整合,請參閱為 HTTP API 建立 HTTP 代理整合。
路由傳送 API 請求
當用戶端傳送 API 請求時,API Gateway 會先決定要將請求路由傳送到哪個階段。如果請求明確符合階段,API Gateway 會將請求傳送至該階段。如果沒有任何階段完全符合請求,API Gateway 會將請求傳送到 $default 階段。如果沒有 $default 階段,則 API 會傳回 {"message":"Not
Found"} 且不會產生 CloudWatch 日誌。
選擇階段後,API Gateway 就會選擇路由。API Gateway 會使用下列優先順序來選取具有最特定相符項目的路由:
完全相符的路由和方法。
使用貪婪路徑變量 (
{proxy+}) 配對路由和方法。$default路由。
如果沒有路由與請求相符,API Gateway 會將 {"message":"Not Found"} 傳回用戶端。
例如,假設具有 $default 階段的 API,以及下列範例路由:
GET /pets/dog/1GET /pets/dog/{id}GET /pets/{proxy+}ANY /{proxy+}$default下表摘要說明 API Gateway 路由傳送請求到範例路由的方式。
| 要求 | 選取的路由 | 說明 |
|---|---|---|
|
|
|
請求完全匹配此靜態路由。 |
|
|
|
請求完全與此路由相符。 |
|
|
|
請求不完全與路由相符。具備 |
|
|
|