Template pemetaan untuk REST APIs - Amazon API Gateway

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) dan diterapkan pada payload menggunakan. JSONPath

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.

Contoh template pemetaan
  1. $inputRootVariabel mewakili objek root dalam data JSON asli dari bagian sebelumnya. Arahan dimulai dengan # simbol.

  2. Sebuah foreach loop iterasi meskipun setiap objek dalam data JSON asli.

  3. Deskripsi adalah gabungan dari Pet id dan type dari data JSON asli.

  4. askingPricepriceadalah 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:

  1. Pada baris 1, $inputRoot variabel mewakili objek root dalam data JSON asli dari bagian sebelumnya. Arahan dimulai dengan # simbol.

  2. Pada baris 3, foreach loop iterasi melalui setiap objek dalam data JSON asli.

  3. Pada baris 5, description ini adalah gabungan dari Pet id dan type dari data JSON asli.

  4. Pada baris 6, askingPrice price adalah harga dari data JSON asli.

Untuk informasi lebih lanjut tentang Bahasa Template Velocity, lihat Apache Velocity - Referensi VTL. Untuk informasi selengkapnya JSONPath, lihat JSONPath - XPath untuk JSON.

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.