

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# WebSocket ekspresi seleksi
<a name="apigateway-websocket-api-selection-expressions"></a>

API Gateway menggunakan ekspresi seleksi sebagai cara untuk mengevaluasi konteks permintaan dan respons dan menghasilkan kunci. Kunci tersebut kemudian digunakan untuk memilih dari serangkaian nilai yang mungkin, biasanya disediakan oleh Anda, pengembang API. Kumpulan yang tepat dari variabel yang didukung akan bervariasi tergantung pada ekspresi tertentu. Setiap ekspresi dibahas secara lebih rinci di bawah ini.

Untuk semua ekspresi, bahasa mengikuti seperangkat aturan yang sama:
+ Variabel diawali dengan`"$"`.
+ Kurung kurawal dapat digunakan untuk secara eksplisit mendefinisikan batas variabel, misalnya,. `"${request.body.version}-beta"`
+ Beberapa variabel didukung, tetapi evaluasi hanya terjadi sekali (tidak ada evaluasi rekursif).
+ Tanda dolar (`$`) dapat lolos dengan`"\"`. Ini paling berguna saat mendefinisikan ekspresi yang memetakan ke `$default` kunci yang dicadangkan, misalnya,`"\$default"`.
+ Dalam beberapa kasus, format pola diperlukan. Dalam hal ini, ekspresi harus dibungkus dengan garis miring (`"/"`), misalnya `"/2\d\d/"` untuk mencocokkan kode `2XX` status.

**Topics**
+ [Ekspresi pemilihan respons rute](#apigateway-websocket-api-route-response-selection-expressions)
+ [Ekspresi pemilihan kunci API](#apigateway-websocket-api-apikey-selection-expressions)
+ [Ekspresi pemilihan pemetaan API](#apigateway-websocket-api-mapping-selection-expressions)
+ [WebSocket ringkasan ekspresi seleksi](#apigateway-websocket-api-selection-expression-table)

## Ekspresi pemilihan respons rute
<a name="apigateway-websocket-api-route-response-selection-expressions"></a>

[Respons rute](apigateway-websocket-api-route-response.md) digunakan untuk memodelkan respons dari backend ke klien. Untuk WebSocket APIs, respons rute adalah opsional. Ketika didefinisikan, ini memberi sinyal ke API Gateway bahwa ia harus mengembalikan respons ke klien setelah menerima WebSocket pesan.

Evaluasi *ekspresi pemilihan respons rute* menghasilkan kunci respons rute. Akhirnya, kunci ini akan digunakan untuk memilih dari salah satu yang [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)terkait dengan API. Namun, saat ini hanya `$default` kunci yang didukung.

## Ekspresi pemilihan kunci API
<a name="apigateway-websocket-api-apikey-selection-expressions"></a>

Ekspresi ini dievaluasi ketika layanan menentukan permintaan yang diberikan harus dilanjutkan hanya jika klien menyediakan [kunci API](api-gateway-basic-concept.md#apigateway-definition-api-key) yang valid.

Saat ini hanya dua nilai yang didukung adalah `$request.header.x-api-key` dan`$context.authorizer.usageIdentifierKey`.

## Ekspresi pemilihan pemetaan API
<a name="apigateway-websocket-api-mapping-selection-expressions"></a>

Ekspresi ini dievaluasi untuk menentukan tahap API mana yang dipilih saat permintaan dibuat menggunakan domain kustom.

Saat ini, satu-satunya nilai yang didukung adalah `$request.basepath`.

## WebSocket ringkasan ekspresi seleksi
<a name="apigateway-websocket-api-selection-expression-table"></a>

Tabel berikut merangkum kasus penggunaan untuk ekspresi seleksi di WebSocket APIs:


| Ekspresi seleksi | Mengevaluasi ke kunci untuk | Catatan | Contoh kasus penggunaan | 
| --- | --- | --- | --- | 
| Api.RouteSelectionExpression | Route.RouteKey | \$1defaultdidukung sebagai rute catch-all. | Rute WebSocket pesan berdasarkan konteks permintaan klien. | 
| Route.ModelSelectionExpression | Kunci untuk Route.RequestModels | Tidak wajib. Jika disediakan untuk integrasi non-proxy, validasi model terjadi. `$default`didukung sebagai catch-all.  | Lakukan validasi permintaan secara dinamis dalam rute yang sama. | 
| Integration.TemplateSelectionExpression | Kunci untuk Integration.RequestTemplates |  Tidak wajib. Dapat disediakan untuk integrasi non-proxy untuk memanipulasi muatan yang masuk. `${request.body.jsonPath}`dan nilai statis didukung. `$default`didukung sebagai catch-all.  | Memanipulasi permintaan pemanggil berdasarkan properti dinamis permintaan. | 
| Integration.IntegrationResponseSelectionExpression | IntegrationResponse.IntegrationResponseKey |  Tidak wajib. Dapat disediakan untuk integrasi non-proxy. Bertindak sebagai kecocokan pola untuk pesan kesalahan (dari Lambda) atau kode status (dari integrasi HTTP). `$default`diperlukan untuk integrasi non-proxy untuk bertindak sebagai tangkapan semua untuk tanggapan yang berhasil.  |  Memanipulasi respons dari backend. Pilih tindakan yang akan terjadi berdasarkan respons dinamis backend (misalnya, menangani kesalahan tertentu dengan jelas).  | 
| IntegrationResponse.TemplateSelectionExpression | Kunci untuk IntegrationResponse.ResponseTemplates | Tidak wajib. Dapat disediakan untuk integrasi non-proxy. \$1 default didukung.  |  Dalam beberapa kasus, properti dinamis dari respons dapat menentukan transformasi yang berbeda dalam rute yang sama dan integrasi terkait. `${request.body.jsonPath}`,`${integration.response.statuscode}`,`${integration.response.header.headerName}`,`${integration.response.multivalueheader.headerName}`, dan nilai statis didukung. `$default`didukung sebagai catch-all.  | 
| Route.RouteResponseSelectionExpression | RouteResponse.RouteResponseKey |  Harus disediakan untuk memulai komunikasi dua arah untuk suatu WebSocket rute. Saat ini, nilai ini dibatasi `$default` hanya untuk.  |  | 
| RouteResponse.ModelSelectionExpression | Kunci untuk RouteResponse.RequestModels | Saat ini tidak didukung. |  | 