Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Template pemetaan untuk REST APIs
Di API Gateway, permintaan atau respons metode API dapat mengambil muatan dalam format yang berbeda dari permintaan atau respons integrasi.
Anda dapat mengubah data Anda menjadi:
Cocokkan payload dengan format yang ditentukan API.
Ganti parameter permintaan dan respons API serta kode status.
Kembalikan header respons yang dipilih klien.
Parameter jalur asosiasi, parameter string kueri, atau parameter header dalam permintaan metode proxy atau Layanan AWS proxy HTTP.
Pilih data mana yang akan dikirim menggunakan integrasi Layanan AWS, seperti fungsi Amazon DynamoDB atau Lambda, atau titik akhir HTTP.
Anda dapat menggunakan template pemetaan untuk mengubah data Anda. Template pemetaan adalah skrip yang dinyatakan dalam Velocity Template Language (VTL)
Bagian ini menjelaskan informasi konseptual yang terkait dengan templat pemetaan. Untuk petunjuk cara membuat template pemetaan API Gateway REST API, lihatMengatur transformasi data di API Gateway.
Contoh template pemetaan
Contoh berikut adalah input data ke permintaan integrasi.
[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Contoh berikut adalah template pemetaan untuk mengubah data permintaan integrasi.
#set($inputRoot = $input.path('$')) [ #foreach($elem in $inputRoot) { "description" : "Item $elem.id is a $elem.type.", "askingPrice" : $elem.price }#if($foreach.hasNext),#end #end ]
Contoh berikut adalah data output dari transformasi.
[ { "description" : "Item 1 is a dog.", "askingPrice" : 249.99 }, { "description" : "Item 2 is a cat.", "askingPrice" : 124.99 }, { "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]
Diagram berikut menunjukkan rincian template pemetaan ini.

$inputRoot
Variabel mewakili objek root dalam data JSON asli dari bagian sebelumnya. Arahan dimulai dengan#
simbol.Sebuah
foreach
loop iterasi meskipun setiap objek dalam data JSON asli.Deskripsi adalah gabungan dari Pet
id
dantype
dari data JSON asli.askingPrice
price
adalah harga dari data JSON asli.
1 #set($inputRoot = $input.path('$')) 2 [ 3 #foreach($elem in $inputRoot) 4 { 5 "description" : "Item $elem.id is a $elem.type.", 6 "askingPrice" : $elem.price 7 }#if($foreach.hasNext),#end 8 #end 9 ]
Dalam template pemetaan ini:
-
Pada baris 1,
$inputRoot
variabel mewakili objek root dalam data JSON asli dari bagian sebelumnya. Arahan dimulai dengan#
simbol. -
Pada baris 3,
foreach
loop iterasi melalui setiap objek dalam data JSON asli. -
Pada baris 5,
description
ini adalah gabungan dari Petid
dantype
dari data JSON asli. -
Pada baris 6,
askingPrice
price
adalah harga dari data JSON asli.
Untuk informasi lebih lanjut tentang Bahasa Template Velocity, lihat Apache Velocity -
Template pemetaan mengasumsikan bahwa data yang mendasarinya adalah objek JSON. Ini tidak mengharuskan model didefinisikan untuk data. Namun, model untuk data keluaran memungkinkan data sebelumnya dikembalikan sebagai objek khusus bahasa. Untuk informasi selengkapnya, lihat Model data untuk REST APIs.
Contoh template pemetaan yang kompleks
Anda juga dapat membuat template pemetaan yang lebih rumit. Contoh berikut menunjukkan rangkaian referensi dan batas 100 untuk menentukan apakah hewan peliharaan terjangkau.
Contoh berikut adalah input data ke permintaan integrasi.
[ { "id": 1, "type": "dog", "price": 249.99 }, { "id": 2, "type": "cat", "price": 124.99 }, { "id": 3, "type": "fish", "price": 0.99 } ]
Contoh berikut adalah template pemetaan untuk mengubah data permintaan integrasi.
#set($inputRoot = $input.path('$')) #set($cheap = 100) [ #foreach($elem in $inputRoot) { #set($name = "${elem.type}number$elem.id") "name" : $name, "description" : "Item $elem.id is a $elem.type.", #if($elem.price > $cheap )#set ($afford = 'too much!') #{else}#set ($afford = $elem.price)#end "askingPrice" : $afford }#if($foreach.hasNext),#end #end ]
Contoh berikut adalah data output dari transformasi.
[ { "name" : dognumber1, "description" : "Item 1 is a dog.", "askingPrice" : too much! }, { "name" : catnumber2, "description" : "Item 2 is a cat.", "askingPrice" : too much! }, { "name" : fishnumber3, "description" : "Item 3 is a fish.", "askingPrice" : 0.99 } ]
Anda juga dapat melihat model data yang lebih rumit. Lihat Contoh model data dan templat pemetaan untuk API Gateway.