

# WebSocket 選択式
<a name="apigateway-websocket-api-selection-expressions"></a>

API Gateway はリクエストとレスポンスのコンテキストを評価し、キーを生成する方法として、選択式を使用します。次に、このキーを使用して、通常は API デベロッパーから提供される使用可能な値のセットから選択できます。サポートされている正確な変数のセットは、式によって異なります。各式については、以下で詳しく説明します。

すべての式では、言語は一連のルールに従います。
+ 変数には `"$"` が前に付けられます。
+ 中かっこを使用して、変数の境界を明示的に定義できます (例: `"${request.body.version}-beta"`)。
+ 複数の変数がサポートされていますが、評価は 1 回しか発生しません (繰り返しの評価は行われません)。
+ ドル記号 (`$`) を使って `"\"` をエスケープすることができます。これは、予約された `$default` キー (例: `"\$default"`) にマッピングされる式を定義するときに最も便利です。
+ 場合によっては、パターン形式が必要です。この場合、式は `"/"` のようにスラッシュ (`"/2\d\d/"`) で囲み、`2XX` のステータスコードに合わせる必要があります。

**Topics**
+ [ルートレスポンス選択式](#apigateway-websocket-api-route-response-selection-expressions)
+ [API キー選択式](#apigateway-websocket-api-apikey-selection-expressions)
+ [API マッピング選択式](#apigateway-websocket-api-mapping-selection-expressions)
+ [WebSocket 選択式の概要](#apigateway-websocket-api-selection-expression-table)

## ルートレスポンス選択式
<a name="apigateway-websocket-api-route-response-selection-expressions"></a>

[ルートレスポンス](apigateway-websocket-api-route-response.md)は、バックエンドからクライアントにレスポンスをモデル化するために使用されます。WebSocket API の場合、ルートレスポンスはオプションです。定義された場合、WebSocket メッセージを受信したときにレスポンスをクライアントに返す必要があることを API Gateway に指定します。

*ルートレスポンス選択式*の評価により、ルートレスポンスキーが生成されます。最終的に、このキーを使用して、API に関連付けられたいずれかの [https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes-routeid-routeresponses.html](https://docs.aws.amazon.com/apigatewayv2/latest/api-reference/apis-apiid-routes-routeid-routeresponses.html) から選択されます。ただし、現在サポートされているのは `$default` キーのみです。

## API キー選択式
<a name="apigateway-websocket-api-apikey-selection-expressions"></a>

この式は、クライアントが有効な [API キー](api-gateway-basic-concept.md#apigateway-definition-api-key)を提供した場合のみ、特定のリクエストを続行する必要があるとサービスが決定したときに評価されます。

現在サポートされている値は、`$request.header.x-api-key` および `$context.authorizer.usageIdentifierKey` の 2 つのみです。

## API マッピング選択式
<a name="apigateway-websocket-api-mapping-selection-expressions"></a>

この式は、カスタムドメインを使用してリクエストが実行されたときに選択する API ステージを決定するために評価されます。

現在、サポートされている値は `$request.basepath` のみです。

## WebSocket 選択式の概要
<a name="apigateway-websocket-api-selection-expression-table"></a>

次の表は、WebSocket API の選択式のユースケースをまとめたものです。


| 選択式 | 評価結果のキー | コメント | ユースケースの例 | 
| --- | --- | --- | --- | 
| Api.RouteSelectionExpression | Route.RouteKey | \$1default はキャッチオールルートとしてサポートされています。 | クライアントリクエストのコンテキストに基づいて Route WebSocket メッセージをルーティングします。 | 
| Route.ModelSelectionExpression | Route.RequestModels のキー | オプション。 非プロキシ統合に対して指定されている場合、モデル検証が発生します。 `$default` はキャッチオールとしてサポートされています。  | 同じルート内で動的にリクエスト検証を実行します。 | 
| Integration.TemplateSelectionExpression | Integration.RequestTemplates のキー |  オプション。 受信ペイロードを操作するための非プロキシ統合に提供できます。 `${request.body.jsonPath}` および静的な値がサポートされています。 `$default` はキャッチオールとしてサポートされています。  | リクエストの動的プロパティに基づいて、呼び出し元のリクエストを操作します。 | 
| Integration.IntegrationResponseSelectionExpression | IntegrationResponse.IntegrationResponseKey |  オプション。非プロキシ統合に提供される場合があります。 エラーメッセージのパターン一致 (Lambda から) またはステータスコード (HTTP 統合から) として動作します。 `$default` は、成功したレスポンスのキャッチオールとして動作する非プロキシ統合で必要です。  |  バックエンドからのレスポンスを操作します。 バックエンドの動的なレスポンスに基づいて発生するアクションを選択します (特定のエラーを明確に処理)。  | 
| IntegrationResponse.TemplateSelectionExpression | IntegrationResponse.ResponseTemplates のキー | オプション。非プロキシ統合に提供される場合があります。\$1default はサポートされています。  |  場合によっては、レスポンスの動的プロパティは、同じルートおよび関連する統合内で別の変換を指示します。 `${request.body.jsonPath}`、`${integration.response.statuscode}`、`${integration.response.header.headerName}`、`${integration.response.multivalueheader.headerName}`、および静的な値がサポートされています。 `$default` はキャッチオールとしてサポートされています。  | 
| Route.RouteResponseSelectionExpression | RouteResponse.RouteResponseKey |  WebSocket ルートの双方向通信を開始するために提供する必要があります。 現在、この値は `$default` のみに制限されています。  |  | 
| RouteResponse.ModelSelectionExpression | RouteResponse.RequestModels のキー | 現在サポートされていません。 |  | 