在API閘道中設定方法回應 - Amazon API 网关

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在API閘道中設定方法回應

方API法響應封裝客戶端將接收的API方法請求的輸出。輸出數據包括一個HTTP狀態碼,一些標題,可能是一個主體。

透過非代理整合,指定的回應參數與本文可從相關聯的整合回應資料映射,或根據映射指派特定靜態值。這些映射是在整合回應中指定。此映射可以是依現狀傳遞整合回應的相同轉換。

透過 Proxy 整合,APIGateway 會自動將後端回應傳遞至方法回應。您無需設置方API法響應。不過,使用 Lambda Proxy 整合時,Lambda 函數必須傳回此輸出格式的結果,APIGateway 才能順利將整合回應對應至方法回應。

透過程式設計方式,方法回應設定等於建立 API Gateway 的MethodResponse資源,並設定statusCoderesponseParameters、和的屬性responseModels

設定API方法的狀態碼時,您應該選擇一個作為預設值來處理意外狀態碼的任何整合回應。您可以設定 500 作為預設值,因為此值相當於將未映射的回應轉換為伺服器端錯誤。基於指示原因,API閘道主控台會將200回應設定為預設值。但您可以將它重設為 500 回應。

若要設定方法回應,您必須已建立方法請求。

設定方法回應狀態碼

方法回應狀態碼可定義回應類型。例如,回應 200、400 與 500 分別表示成功、用戶端錯誤與伺服器端錯誤回應。

若要設定方法回應狀態碼,請將statusCode屬性設定為HTTP狀態碼。下列 AWS CLI 命令會建立方法回應 200

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200

設定方法回應參數

方法回應參數可定義用戶端所收到以回應相關聯方法請求的標頭。回應參數也會根據API方法整合回應中規定的對應,指定 API Gateway 對應整合回應參數的目標。

若要設定方法回應參數,請新增至 responseParameters 格式之 MethodResponse 索引鍵/值組的 "{parameter-name}":"{boolean}" 映射。下面的CLI命令顯示了設置my-header標題的一個例子。

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false

設定方法回應模型

方法回應模型可定義方法回應本文的格式。在設定回應模型之前,您必須先在 API Gateway 中建立模型。若要這樣做,您可以呼叫 create-model 命令。下列範例示範如何建立 PetStorePet 模型,以描述 GET /pets/{petId} 方法請求的回應本文。

aws apigateway create-model \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --content-type application/json \ --name PetStorePet \ --schema '{ \ "$schema": "http://json-schema.org/draft-04/schema#", \ "title": "PetStorePet", \ "type": "object", \ "properties": { \ "id": { "type": "number" }, \ "type": { "type": "string" }, \ "price": { "type": "number" } \ } \ }'

結果會建立為API閘道Model資源。

要設置方法響應模型以定義有效負載格式,請將「應用/json」:PetStorePet」鍵值對添加到資源requestModels映射。MethodResponse以下 AWS CLI 命令put-method-response顯示了如何完成此操作:

aws apigateway put-method-response \ --region us-west-2 \ --rest-api-id vaz7da96z6 \ --resource-id 6sxz2j \ --http-method GET \ --status-code 200 \ --response-parameters method.response.header.my-header=false \ --response-models '{"application/json":"PetStorePet"}'

當您產生的強類SDK型時,必須設定方法回應模型API。它可確保輸出在 Java 或 Objective-C 中轉換成適當的類別。在其他情況下,設定模型為選擇性。