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\":{}}"}