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 dapat mengambil muatan dalam format yang berbeda dari permintaan atau respons integrasi. API
Anda dapat mengubah data Anda menjadi:
Cocokkan payload dengan format API -ditentukan.
Ganti parameter API permintaan dan respons dan kode status.
Kembalikan header respons yang dipilih klien.
Parameter jalur asosiasi, parameter string kueri, atau parameter header dalam permintaan metode HTTP proxy atau AWS layanan proxy.
Pilih data mana yang akan dikirim menggunakan integrasi AWS layanan, 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 untuk API Gateway RESTAPI, 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 JSON data asli dari bagian sebelumnya. Arahan dimulai dengan#
simbol.Sebuah
foreach
loop iterasi meskipun setiap objek dalam JSON data asli.Deskripsi adalah gabungan dari Pet
id
dantype
dari data asli. JSONaskingPrice
price
adalah harga dari JSON data 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 JSON data asli dari bagian sebelumnya. Arahan dimulai dengan#
simbol. -
Pada baris 3,
foreach
loop iterasi melalui setiap objek dalam JSON data asli. -
Pada baris 5, itu
description
adalah gabungan dari Petid
dantype
dari data asli. JSON -
Pada baris 6,
askingPrice
price
adalah harga dari JSON data asli.
Untuk informasi lebih lanjut tentang Bahasa Template Velocity, lihat Apache Velocity
Template pemetaan mengasumsikan bahwa data yang mendasarinya adalah JSON objek. 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.