Pilih preferensi cookie Anda

Kami menggunakan cookie penting serta alat serupa yang diperlukan untuk menyediakan situs dan layanan. Kami menggunakan cookie performa untuk mengumpulkan statistik anonim sehingga kami dapat memahami cara pelanggan menggunakan situs dan melakukan perbaikan. Cookie penting tidak dapat dinonaktifkan, tetapi Anda dapat mengklik “Kustom” atau “Tolak” untuk menolak cookie performa.

Jika Anda setuju, AWS dan pihak ketiga yang disetujui juga akan menggunakan cookie untuk menyediakan fitur situs yang berguna, mengingat preferensi Anda, dan menampilkan konten yang relevan, termasuk iklan yang relevan. Untuk menerima atau menolak semua cookie yang tidak penting, klik “Terima” atau “Tolak”. Untuk membuat pilihan yang lebih detail, klik “Kustomisasi”.

Contoh menggunakan variabel untuk memetakan transformasi template untuk API Gateway

Mode fokus
Contoh menggunakan variabel untuk memetakan transformasi template untuk API Gateway - Amazon API Gateway

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

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

Contoh berikut menunjukkan cara menggunakan$context,input, dan util variabel dalam template pemetaan. Anda dapat menggunakan integrasi tiruan atau integrasi non-proxy Lambda yang mengembalikan peristiwa input kembali ke API Gateway. Untuk daftar semua variabel yang didukung untuk transformasi data, lihatVariabel untuk transformasi data untuk API Gateway.

Contoh 1: Berikan beberapa $context variabel ke titik akhir integrasi

Contoh berikut menunjukkan template pemetaan yang memetakan $context variabel masuk ke variabel backend dengan nama yang sedikit berbeda dalam payload permintaan integrasi:

{ "stage" : "$context.stage", "request_id" : "$context.requestId", "api_id" : "$context.apiId", "resource_path" : "$context.resourcePath", "resource_id" : "$context.resourceId", "http_method" : "$context.httpMethod", "source_ip" : "$context.identity.sourceIp", "user-agent" : "$context.identity.userAgent", "account_id" : "$context.identity.accountId", "api_key" : "$context.identity.apiKey", "caller" : "$context.identity.caller", "user" : "$context.identity.user", "user_arn" : "$context.identity.userArn" }

Output dari template pemetaan ini akan terlihat seperti berikut:

{ stage: 'prod', request_id: 'abcdefg-000-000-0000-abcdefg', api_id: 'abcd1234', resource_path: '/', resource_id: 'efg567', http_method: 'GET', source_ip: '192.0.2.1', user-agent: 'curl/7.84.0', account_id: '111122223333', api_key: 'MyTestKey', caller: 'ABCD-0000-12345', user: 'ABCD-0000-12345', user_arn: 'arn:aws:sts::111122223333:assumed-role/Admin/carlos-salazar' }

Salah satu variabelnya adalah kunci API. Contoh ini mengasumsikan bahwa metode tersebut memerlukan kunci API.

Contoh 2: Teruskan semua parameter permintaan ke titik akhir integrasi melalui payload JSON

Contoh berikut meneruskan semua parameter permintaan, termasukpath,querystring, dan header parameter, ke titik akhir integrasi melalui payload JSON:

#set($allParams = $input.params()) { "params" : { #foreach($type in $allParams.keySet()) #set($params = $allParams.get($type)) "$type" : { #foreach($paramName in $params.keySet()) "$paramName" : "$util.escapeJavaScript($params.get($paramName))" #if($foreach.hasNext),#end #end } #if($foreach.hasNext),#end #end } }

Jika permintaan memiliki parameter input berikut:

  • Parameter jalur bernama myparam

  • Parameter string kueri querystring1=value1,value2

  • Header. "header1" : "value1"

Output dari template pemetaan ini akan terlihat seperti berikut:

{"params":{"path":{"example2":"myparamm"},"querystring":{"querystring1":"value1,value2"},"header":{"header1":"value1"}}}

Contoh 3: Lulus subbagian dari permintaan metode ke titik akhir integrasi

Contoh berikut menggunakan parameter input name untuk mengambil hanya name parameter dan parameter input input.json('$') untuk mengambil seluruh isi permintaan metode:

{ "name" : "$input.params('name')", "body" : $input.json('$') }

Untuk permintaan yang menyertakan parameter string kueri name=Bella&type=dog dan isi berikut:

{ "Price" : "249.99", "Age": "6" }

Output dari template pemetaan ini akan terlihat seperti berikut:

{ "name" : "Bella", "body" : {"Price":"249.99","Age":"6"} }

Template pemetaan ini menghapus parameter type=dog string kueri.

Jika input JSON berisi karakter unescaped yang tidak dapat diuraikan, API JavaScript Gateway mungkin menampilkan respons 400. Terapkan $util.escapeJavaScript($input.json('$')) untuk memastikan input JSON dapat diurai dengan benar.

Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$')) diterapkan adalah sebagai berikut:

{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$'))" }

Dalam hal ini, output dari template pemetaan ini akan terlihat seperti berikut:

{ "name" : "Bella", "body": {"Price":"249.99","Age":"6"} }

Contoh 4: Gunakan JSONPath ekspresi untuk meneruskan subbagian dari permintaan metode ke titik akhir integrasi

Contoh berikut menggunakan JSONPath ekspresi untuk mengambil hanya parameter input name dan Age dari badan permintaan:

{ "name" : "$input.params('name')", "body" : $input.json('$.Age') }

Untuk permintaan yang menyertakan parameter string kueri name=Bella&type=dog dan isi berikut:

{ "Price" : "249.99", "Age": "6" }

Output dari template pemetaan ini akan terlihat seperti berikut:

{ "name" : "Bella", "body" : "6" }

Template pemetaan ini menghapus parameter string kueri type=dog dan Price bidang dari badan.

Jika payload permintaan metode berisi karakter unescaped yang tidak dapat diuraikan, API JavaScript Gateway mungkin menampilkan respons. 400 Terapkan $util.escapeJavaScript() untuk memastikan input JSON dapat diurai dengan benar.

Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$.Age')) diterapkan adalah sebagai berikut:

{ "name" : "$input.params('name')", "body" : "$util.escapeJavaScript($input.json('$.Age'))" }

Dalam hal ini, output dari template pemetaan ini akan terlihat seperti berikut:

{ "name" : "Bella", "body": "\"6\"" }

Contoh 5: Gunakan JSONPath ekspresi untuk meneruskan informasi tentang permintaan metode ke titik akhir integrasi

Contoh berikut menggunakan$input.params(),$input.path(), dan $input.json() untuk mengirim informasi tentang permintaan metode ke titik akhir integrasi. Template pemetaan ini menggunakan size() metode untuk memberikan jumlah elemen dalam daftar.

{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : $input.json('$.things') }

Untuk permintaan yang menyertakan parameter jalur 123 dan isi berikut:

{ "things": { "1": {}, "2": {}, "3": {} } }

Output dari template pemetaan ini akan terlihat seperti berikut:

{"id":"123","count":"3","things":{"1":{},"2":{},"3":{}}}

Jika payload permintaan metode berisi karakter unescaped yang tidak dapat diuraikan, API JavaScript Gateway mungkin menampilkan respons. 400 Terapkan $util.escapeJavaScript() untuk memastikan input JSON dapat diurai dengan benar.

Contoh sebelumnya dengan $util.escapeJavaScript($input.json('$.things')) diterapkan adalah sebagai berikut:

{ "id" : "$input.params('id')", "count" : "$input.path('$.things').size()", "things" : "$util.escapeJavaScript($input.json('$.things'))" }

Output dari template pemetaan ini akan terlihat seperti berikut:

{"id":"123","count":"3","things":"{\"1\":{},\"2\":{},\"3\":{}}"}
PrivasiSyarat situsPreferensi cookie
© 2025, Amazon Web Services, Inc. atau afiliasinya. Semua hak dilindungi undang-undang.