本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 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/1
GET /pets/dog/{id}
GET /pets/{proxy+}
ANY /{proxy+}
$default
下表摘要說明 API Gateway 路由傳送請求到範例路由的方式。
要求 | 選取的路由 | 說明 |
---|---|---|
|
|
請求完全匹配此靜態路由。 |
|
|
請求完全與此路由相符。 |
|
|
請求不完全與路由相符。具備 |
|
|
|