Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
APIGateway 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, API pengembang. 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 kode2
status.XX
Topik
Ekspresi pemilihan respons rute
Respons rute digunakan untuk memodelkan respons dari backend ke klien. Untuk WebSocket APIs, respons rute adalah opsional. Ketika didefinisikan, itu 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 RouteResponses
terkait denganAPI. Namun, saat ini hanya $default
kunci yang didukung.
APIekspresi pemilihan kunci
Ekspresi ini dievaluasi ketika layanan menentukan permintaan yang diberikan harus dilanjutkan hanya jika klien memberikan APIkunci yang valid.
Saat ini hanya dua nilai yang didukung adalah $request.header.x-api-key
dan$context.authorizer.usageIdentifierKey
.
APIekspresi pemilihan pemetaan
Ekspresi ini dievaluasi untuk menentukan API tahap mana yang dipilih saat permintaan dibuat menggunakan domain khusus.
Saat ini, satu-satunya nilai yang didukung adalah $request.basepath
.
WebSocketringkasan ekspresi seleksi
Tabel berikut merangkum kasus penggunaan untuk ekspresi seleksi di WebSocketAPIs:
Ekspresi seleksi | Mengevaluasi ke kunci untuk | Catatan | Contoh kasus penggunaan |
---|---|---|---|
Api.RouteSelectionExpression |
Route.RouteKey |
$default didukung 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.
|
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.
|
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 HTTP integrasi).
|
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. $ default didukung. |
Dalam beberapa kasus, properti dinamis dari respons dapat menentukan transformasi yang berbeda dalam rute yang sama dan integrasi terkait.
|
Route.RouteResponseSelectionExpression |
RouteResponse.RouteResponseKey |
Harus disediakan untuk memulai komunikasi dua arah untuk suatu WebSocket rute. Saat ini, nilai ini dibatasi |
|
RouteResponse.ModelSelectionExpression |
Kunci untuk RouteResponse.RequestModels |
Saat ini tidak didukung. |