Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Contoh berikut menunjukkan cara membuat dan menguji penggantian template pemetaan. Dua contoh pertama menggunakan AWS Management Console dan Example API sebagai titik awal. Dua contoh terakhir menggunakan AWS CLI dan SDK untuk JavaScript.
Ganti kode status respons API menggunakan AWS Management Console
Untuk mengambil hewan peliharaan menggunakan API PetStore sampel, Anda menggunakan permintaan metode APIGET
/pets/{petId}
, di mana {petId}
merupakan parameter jalur yang dapat mengambil nomor pada waktu proses.
Dalam contoh ini, Anda akan mengganti kode respons GET
metode ini dengan membuat template pemetaan yang $context.responseOverride.status
dipetakan 400
saat kondisi kesalahan terdeteksi.
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Di bawah APIs, pilih PetStore API, lalu pilih Resources.
-
Di pohon Resources, pilih
GET
metode di bawah/{petId}
. -
Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Untuk PeTiD, masukkan
-1
, lalu pilih Test.Dalam hasilnya, Anda akan melihat dua hal:
Pertama, badan Respons menunjukkan out-of-range kesalahan:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Kedua, baris terakhir di bawah kotak Log diakhiri dengan:
Method completed with status: 200
. -
Pada tab Respons Integrasi, untuk Default - Respons, pilih Edit.
-
Pilih template Pemetaan.
-
Pilih Tambahkan templat pemetaan.
-
Untuk jenis Konten, masukkan
application/json
. -
Untuk badan Template, masukkan yang berikut ini:
#set($inputRoot = $input.path('$')) $input.json("$") #if($inputRoot.toString().contains("error")) #set($context.responseOverride.status = 400) #end
-
Pilih Simpan.
-
Pilih tab Uji.
-
Untuk PeTiD, masukkan.
-1
-
Dalam hasilnya, Response Body menunjukkan out-of-range kesalahan:
{ "errors": [ { "key": "GetPetRequest.petId", "message": "The value is out of range." } ] }
Namun, baris terakhir di bawah kotak Log sekarang berakhir dengan:
Method completed with status: 400
.
Ganti parameter permintaan API dan header menggunakan AWS Management Console
Dalam contoh ini, Anda akan mengganti kode header permintaan GET
metode dengan membuat template pemetaan yang memetakan $context.requestOverride.header.
ke header baru yang menggabungkan dua header lainnya.header_name
Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway
. -
Di bawah APIs, pilih PetStore API.
-
Di pohon Resources, pilih
GET
metode di bawah/pet
. -
Pada tab Permintaan metode, untuk pengaturan permintaan Metode, pilih Edit.
-
Pilih header permintaan HTTP, lalu pilih Tambah header.
-
Untuk Nama, masukkan
header1
. -
Pilih Tambahkan header, lalu buat header kedua yang disebut
header2
. -
Pilih Simpan.
-
Pada tab Permintaan integrasi, untuk pengaturan permintaan Integrasi, pilih Edit.
-
Untuk Request body passthrough, pilih Bila tidak ada templat yang ditentukan (disarankan).
-
Pilih template Pemetaan, lalu lakukan hal berikut:
-
Pilih Tambahkan templat pemetaan.
-
Untuk jenis Konten, masukkan
application/json
. -
Untuk badan Template, masukkan yang berikut ini:
#set($header1Override = "foo") #set($header3Value = "$input.params('header1')$input.params('header2')") $input.json("$") #set($context.requestOverride.header.header3 = $header3Value) #set($context.requestOverride.header.header1 = $header1Override) #set($context.requestOverride.header.multivalueheader=[$header1Override, $header3Value])
-
-
Pilih Simpan.
-
Pilih tab Uji.
-
Di bawah Header untuk {pets}, salin kode berikut:
header1:header1Val header2:header2Val
-
Pilih Uji.
Di Log, Anda akan melihat entri yang menyertakan teks ini:
Endpoint request headers: {header3=header1Valheader2Val, header2=header2Val, header1=foo, x-amzn-apigateway-api-id=
<api-id>
, Accept=application/json, multivalueheader=foo,header1Valheader2Val}
Ganti parameter permintaan API dan header menggunakan AWS CLI
Contoh CLI berikut menunjukkan cara menggunakan put-integration
perintah untuk mengganti kode respons:
aws apigateway put-integration --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--type<INTEGRATION_TYPE>
--request-templates<REQUEST_TEMPLATE_MAP>
di mana <REQUEST_TEMPLATE_MAP>
adalah peta dari jenis konten ke string template untuk diterapkan. Struktur peta tersebut adalah sebagai berikut:
Content_type1=template_string,Content_type2=template_string
atau, dalam sintaks JSON:
{"content_type1": "template_string" ...}
Contoh berikut menunjukkan cara menggunakan put-integration-response
perintah untuk mengganti kode respons API:
aws apigateway put-integration-response --rest-api-id
<API_ID>
--resource-id<PATH_TO_RESOURCE_ID>
--http-method<METHOD>
--status-code<STATUS_CODE>
--response-templates<RESPONSE_TEMPLATE_MAP>
di mana <RESPONSE_TEMPLATE_MAP>
memiliki format yang sama seperti <REQUEST_TEMPLATE_MAP>
di atas.
Ganti parameter permintaan dan header API menggunakan SDK untuk JavaScript
Contoh berikut menunjukkan cara menggunakan put-integration
perintah untuk mengganti kode respons:
Permintaan:
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ type: HTTP | AWS | MOCK | HTTP_PROXY | AWS_PROXY, /* required */ requestTemplates: { '
<Content_type>
': 'TEMPLATE_STRING', /* '<String>
': ... */ }, }; apigateway.putIntegration(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });
Tanggapan:
var params = { httpMethod: 'STRING_VALUE', /* required */ resourceId: 'STRING_VALUE', /* required */ restApiId: 'STRING_VALUE', /* required */ statusCode: 'STRING_VALUE', /* required */ responseTemplates: { '<Content_type>': 'TEMPLATE_STRING', /* '<String>': ... */ }, }; apigateway.putIntegrationResponse(params, function(err, data) { if (err) console.log(err, err.stack); // an error occurred else console.log(data); // successful response });