

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

# API Gateway 中 REST API 的方法
<a name="how-to-method-settings"></a>

 在 API Gateway 中，API 方法包含[方法請求](https://docs.aws.amazon.com/apigateway/latest/api/API_Method.html)與[方法回應](https://docs.aws.amazon.com/apigateway/latest/api/API_MethodResponse.html)。您可以設定 API 方法，來定義用戶端應該或必須執行才能提交請求以存取後端服務的操作，以及定義用戶端接著會收到的回應。輸入時，您可以選擇方法請求參數或適用的承載，讓用戶端在執行階段提供必要或選用的資料。輸出時，您會決定方法回應狀態碼、標頭與適用的本文，以作為後端回應資料映射的目標，再將這些目標傳回用戶端。為了協助用戶端開發人員了解您的 API 行為以及輸入與輸出格式，您可以[記錄您的 API](api-gateway-documenting-api.md) 並提供有關[無效的請求](api-gateway-method-request-validation.md)[的適當錯誤訊息](api-gateway-gatewayResponse-definition.md#customize-gateway-responses)。

API 方法請求是 HTTP 請求。若要設定方法請求，請設定 HTTP 方法 (或動詞)、API [資源](https://docs.aws.amazon.com/apigateway/latest/api/API_Resource.html)的路徑、標頭、適用的查詢字串參數。當 HTTP 方法是 `POST`、`PUT` 或 `PATCH` 時，您也會設定承載。例如，若要使用 [PetStore 範例 API](api-gateway-create-api-from-example.md) 擷取寵物，請定義 `GET /pets/{petId}` 的 API 方法請求，其中 `{petId}` 是可在執行階段接受一個數值的路徑參數。

```
GET /pets/1
Host: apigateway.us-east-1.amazonaws.com
...
```

如果用戶端指定不正確的路徑，例如 `/pet/1` 或 `/pets/one` 而不是 `/pets/1`，則會擲回例外狀況。

API 方法回應是指定狀態碼的 HTTP 回應。對於非代理整合，您必須設定方法回應來指定映射的必要或選用目標。這會將整合回應標頭或本文轉換成相關聯的方法回應標頭或本文。映射可以像[身分轉換](https://en.wikipedia.org/wiki/Identity_transform)一樣簡單，該轉換會依原狀透過整合來傳遞標頭或內文。例如，下列 `200` 方法回應顯示依現狀傳遞成功整合回應的範例。

```
200 OK 
Content-Type: application/json
...

{
    "id": "1",
    "type": "dog",
    "price": "$249.99"
}
```

基本上，您可以定義對應到後端之特定回應的方法回應。一般而言，這涉及任何 2XX、4XX 與 5XX 回應。不過，這可能不可行，因為您通常不太可能會事先知道後端可能傳回的所有回應。實際操作時，您可以指定一個方法回應作為預設值，處理來自後端之不明或未映射的回應。您最好指定 500 回應做為預設值。在任何情況下，您都必須為非代理整合設定至少一個方法回應。否則，API Gateway 會將 500 錯誤回應傳回用戶端，即使請求在後端成功也一樣。

 若要讓您的 API 支援強型別開發套件 (例如 Java 開發套件)，您應該定義方法請求輸入的資料模型，並定義方法回應輸出的資料模型。

## 先決條件
<a name="method-setting-prerequisites"></a>

設定 API 方法之前，請驗證下列項目：
+ 您必須在 API Gateway 中有可用的方法。請遵循中的說明進行[教學：建立具有 HTTP 非代理整合的 REST API](api-gateway-create-api-step-by-step.md)
+ 如果您想要讓方法與 Lambda 函數通訊，您必須已在 IAM 中建立 Lambda 呼叫角色與 Lambda 執行角色。您也必須已建立 Lambda 函數與您要在 AWS Lambda中用來通訊的方法。若要建立角色與函數，請使用[選擇 AWS Lambda 整合教學課程](getting-started-with-lambda-integration.md) 之[為 Lambda 非代理整合建立 Lambda 函數](getting-started-lambda-non-proxy-integration.md#getting-started-new-lambda)中的說明。
+ 如果您想要讓方法與 HTTP 或 HTTP 代理整合通訊，您必須已建立方法將用來通訊的 HTTP 端點 URL 並具備其存取權。
+  確認 API Gateway 是否支援 HTTP 與 HTTP 代理端點的憑證。如需詳細資訊，請參閱 [在 API Gateway 中，API Gateway 支援的 HTTP 與 HTTP 代理整合憑證授權單位](api-gateway-supported-certificate-authorities-for-http-endpoints.md)。

**Topics**
+ [先決條件](#method-setting-prerequisites)
+ [在 API Gateway 中設定方法請求](api-gateway-method-settings-method-request.md)
+ [在 API Gateway 中設定方法回應](api-gateway-method-settings-method-response.md)
+ [使用 API Gateway 主控台設定方法](how-to-set-up-method-using-console.md)