Template pemetaan untuk REST APIs - APIGerbang Amazon

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

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.

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

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

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

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

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

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

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

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

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

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.