Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Siapkan validasi permintaan dasar di API Gateway
Bagian ini menunjukkan cara menyiapkan validasi permintaan untuk API Gateway menggunakan konsol AWS CLI, dan API definisi Terbuka.
Topik
Mengatur validasi permintaan menggunakan konsol API Gateway
Anda dapat menggunakan konsol API Gateway untuk memvalidasi permintaan dengan memilih salah satu dari tiga validator untuk permintaan: API
-
Validasi tubuh.
-
Validasi parameter string kueri dan header.
-
Validasi isi, parameter string kueri, dan header.
Saat Anda menerapkan salah satu validator pada API metode, konsol API Gateway menambahkan validator ke peta. API RequestValidators
Untuk mengikuti tutorial ini, Anda akan menggunakan AWS CloudFormation template untuk membuat API Gateway API yang tidak lengkap. Ini API memiliki /validator
sumber daya dengan GET
dan POST
metode. Kedua metode terintegrasi dengan http://petstore-demo-endpoint.execute-api.com/petstore/pets
HTTP titik akhir. Anda akan mengkonfigurasi dua jenis validasi permintaan:
-
Dalam
GET
metode ini, Anda akan mengkonfigurasi validasi permintaan untuk parameter string URL kueri. -
Dalam
POST
metode ini, Anda akan mengonfigurasi validasi permintaan untuk badan permintaan.
Ini akan memungkinkan hanya API panggilan tertentu untuk melewati keAPI.
Unduh dan unzip template pembuatan aplikasi untuk AWS CloudFormation. Anda akan menggunakan template ini untuk membuat yang tidak lengkapAPI. Anda akan menyelesaikan langkah-langkah lainnya di konsol API Gateway.
Untuk membuat AWS CloudFormation tumpukan
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih Buat tumpukan kemudian pilih Dengan sumber daya baru (standar).
-
Untuk Tentukan templat, pilih Unggah file templat.
-
Pilih template yang Anda unduh.
-
Pilih Selanjutnya.
-
Untuk nama Stack, masukkan
request-validation-tutorial-console
dan kemudian pilih Berikutnya. -
Untuk opsi Konfigurasi tumpukan, pilih Berikutnya.
-
Untuk Kemampuan, akui bahwa AWS CloudFormation dapat membuat IAM sumber daya di akun Anda.
-
Pilih Kirim.
AWS CloudFormation ketentuan sumber daya yang ditentukan dalam template. Diperlukan beberapa menit untuk menyelesaikan penyediaan sumber daya Anda. Ketika status AWS CloudFormation tumpukan Anda adalah CREATE_ COMPLETE, Anda siap untuk melanjutkan ke langkah berikutnya.
Untuk memilih yang baru dibuat API
Pilih
request-validation-tutorial-console
tumpukan yang baru dibuat.Pilih Sumber daya.
Di bawah ID Fisik, pilih AndaAPI. Tautan ini akan mengarahkan Anda ke konsol API Gateway.
Sebelum Anda memodifikasi GET
dan POST
metode, Anda harus membuat model.
Untuk membuat model
-
Model diperlukan untuk menggunakan validasi permintaan pada badan permintaan yang masuk. Untuk membuat model, di panel navigasi utama, pilih Model.
-
Pilih Buat model.
-
Untuk Nama, masukkan
PetStoreModel
. -
Untuk Jenis Konten, masukkan
application/json
. Jika tidak ada jenis konten yang cocok ditemukan, validasi permintaan tidak dilakukan. Untuk menggunakan model yang sama terlepas dari jenis konten, masukkan$default
. -
Untuk Deskripsi, masukkan
My PetStore Model
sebagai deskripsi model. -
Untuk skema Model, tempelkan model berikut ke editor kode, dan pilih Buat.
{ "type" : "object", "required" : [ "name", "price", "type" ], "properties" : { "id" : { "type" : "integer" }, "type" : { "type" : "string", "enum" : [ "dog", "cat", "fish" ] }, "name" : { "type" : "string" }, "price" : { "type" : "number", "minimum" : 25.0, "maximum" : 500.0 } } }
Untuk informasi lebih lanjut tentang model, lihatModel data untuk REST APIs.
Untuk mengonfigurasi validasi permintaan untuk suatu metode GET
-
Di panel navigasi utama, pilih Resources, lalu pilih GETmetode.
-
Pada tab Permintaan metode, di bawah Pengaturan permintaan metode, pilih Edit.
-
Untuk validator Permintaan, pilih Validasi parameter string kueri dan header.
Di bawah parameter string URL kueri, lakukan hal berikut:
Pilih Tambahkan string kueri.
Untuk Nama, masukkan
petType
.Aktifkan Diperlukan.
Tetap caching dimatikan.
-
Pilih Simpan.
-
Pada tab Permintaan integrasi, di bawah Pengaturan permintaan integrasi, pilih Edit.
Di bawah parameter string URL kueri, lakukan hal berikut:
Pilih Tambahkan string kueri.
Untuk Nama, masukkan
petType
.Untuk Dipetakan dari, masukkan
method.request.querystring.petType
. Ini memetakanpetType
ke jenis hewan peliharaan.Untuk informasi selengkapnya tentang pemetaan data, lihat tutorial pemetaan data.
Tetap caching dimatikan.
Pilih Simpan.
Untuk menguji validasi permintaan untuk metode GET
-
Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Untuk string Kueri, masukkan
petType=dog
, lalu pilih Uji. -
Tes metode akan kembali
200 OK
dan daftar anjing-anjingnya.Untuk informasi tentang cara mengubah data keluaran ini, lihat tutorial pemetaan data.
-
Hapus
petType=dog
dan pilih Uji. -
Tes metode akan mengembalikan
400
kesalahan dengan pesan kesalahan berikut:{ "message": "Missing required request parameters: [petType]" }
Untuk mengkonfigurasi validasi permintaan untuk metode POST
-
Di panel navigasi utama, pilih Resources, lalu pilih POSTmetode.
-
Pada tab Permintaan metode, di bawah Pengaturan permintaan metode, pilih Edit.
-
Untuk validator Permintaan, pilih Validasi isi.
-
Di bawah badan Permintaan, pilih Tambah model.
-
Untuk jenis Konten, masukkan
application/json
, dan kemudian untuk Model, pilih PetStoreModel. Pilih Simpan.
Untuk menguji validasi permintaan untuk metode POST
-
Pilih tab Uji. Anda mungkin perlu memilih tombol panah kanan untuk menampilkan tab.
-
Untuk Request body paste berikut ini ke editor kode:
{ "id": 2, "name": "Bella", "type": "dog", "price": 400 }
Pilih Uji.
-
Tes metode akan kembali
200 OK
dan pesan sukses. -
Untuk Request body paste berikut ini ke editor kode:
{ "id": 2, "name": "Bella", "type": "dog", "price": 4000 }
Pilih Uji.
-
Tes metode akan mengembalikan
400
kesalahan dengan pesan kesalahan berikut:{ "message": "Invalid request body" }
Di bagian bawah log pengujian, alasan untuk badan permintaan yang tidak valid dikembalikan. Dalam hal ini, harga hewan peliharaan berada di luar maksimum yang ditentukan dalam model.
Untuk menghapus AWS CloudFormation tumpukan
Buka AWS CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih AWS CloudFormation tumpukan Anda.
-
Pilih Hapus dan kemudian konfirmasikan pilihan Anda.
Langkah selanjutnya
Untuk informasi tentang cara mengubah data keluaran dan melakukan lebih banyak pemetaan data, lihat tutorial pemetaan data.
Ikuti Mengatur validasi permintaan dasar menggunakan AWS CLI tutorial, untuk melakukan langkah-langkah serupa menggunakan. AWS CLI
Siapkan validasi permintaan dasar menggunakan AWS CLI
Anda dapat membuat validator untuk menyiapkan validasi permintaan menggunakan. AWS CLI Untuk mengikuti tutorial ini, Anda akan menggunakan AWS CloudFormation template untuk membuat API Gateway API yang tidak lengkap.
catatan
Ini bukan AWS CloudFormation template yang sama dengan tutorial konsol.
Menggunakan /validator
sumber daya pra-ekspos, Anda akan membuat GET
dan POST
metode. Kedua metode akan terintegrasi dengan http://petstore-demo-endpoint.execute-api.com/petstore/pets
HTTP titik akhir. Anda akan mengkonfigurasi dua validasi permintaan berikut:
-
Pada
GET
metode ini, Anda akan membuatparams-only
validator untuk memvalidasi parameter string URL kueri. -
Pada
POST
metode ini, Anda akan membuatbody-only
validator untuk memvalidasi badan permintaan.
Ini akan memungkinkan hanya API panggilan tertentu untuk melewati keAPI.
Untuk membuat AWS CloudFormation tumpukan
Unduh dan unzip template pembuatan aplikasi untuk AWS CloudFormation.
Untuk menyelesaikan tutorial berikut, Anda memerlukan AWS Command Line Interface (AWS CLI) versi 2.
Untuk perintah panjang, karakter escape (\
) digunakan untuk memisahkan perintah menjadi beberapa baris.
catatan
Di Windows, beberapa CLI perintah Bash yang biasa Anda gunakan (sepertizip
) tidak didukung oleh terminal bawaan sistem operasi. Untuk mendapatkan versi terintegrasi Windows dari Ubuntu dan Bash, instal Windows Subsystem untuk
Gunakan perintah berikut untuk membuat AWS CloudFormation tumpukan.
aws cloudformation create-stack --stack-name request-validation-tutorial-cli --template-body file://request-validation-tutorial-cli.zip --capabilities CAPABILITY_NAMED_IAM
-
AWS CloudFormation ketentuan sumber daya yang ditentukan dalam template. Diperlukan beberapa menit untuk menyelesaikan penyediaan sumber daya Anda. Gunakan perintah berikut untuk melihat status AWS CloudFormation tumpukan Anda.
aws cloudformation describe-stacks --stack-name request-validation-tutorial-cli
-
Ketika status AWS CloudFormation tumpukan Anda
StackStatus: "CREATE_COMPLETE"
, gunakan perintah berikut untuk mengambil nilai output yang relevan untuk langkah-langkah masa depan.aws cloudformation describe-stacks --stack-name request-validation-tutorial-cli --query "Stacks[*].Outputs[*].{OutputKey: OutputKey, OutputValue: OutputValue, Description: Description}"
Nilai output adalah sebagai berikut:
ApiId, yang merupakan ID untukAPI. Untuk tutorial ini, API ID adalah
abc123
.ResourceId, yang merupakan ID untuk sumber daya validator tempat
GET
danPOST
metode diekspos. Untuk tutorial ini, ID Sumber Daya adalahefg456
Untuk membuat validator permintaan dan mengimpor model
-
Validator diperlukan untuk menggunakan validasi permintaan dengan file. AWS CLI Gunakan perintah berikut untuk membuat validator yang hanya memvalidasi parameter permintaan.
aws apigateway create-request-validator --rest-api-id
abc123
\ --no-validate-request-body \ --validate-request-parameters \ --name params-onlyPerhatikan ID
params-only
validator. -
Gunakan perintah berikut untuk membuat validator yang hanya memvalidasi badan permintaan.
aws apigateway create-request-validator --rest-api-id
abc123
\ --validate-request-body \ --no-validate-request-parameters \ --name body-onlyPerhatikan ID
body-only
validator. -
Model diperlukan untuk menggunakan validasi permintaan pada badan permintaan yang masuk. Gunakan perintah berikut untuk mengimpor model.
aws apigateway create-model --rest-api-id
abc123
--name PetStoreModel --description 'My PetStore Model' --content-type 'application/json' --schema '{"type": "object", "required" : [ "name", "price", "type" ], "properties" : { "id" : {"type" : "integer"},"type" : {"type" : "string", "enum" : [ "dog", "cat", "fish" ]},"name" : { "type" : "string"},"price" : {"type" : "number","minimum" : 25.0, "maximum" : 500.0}}}}'Jika tidak ada jenis konten yang cocok ditemukan, validasi permintaan tidak dilakukan. Untuk menggunakan model yang sama terlepas dari jenis konten, tentukan
$default
sebagai kunci.
Untuk membuat GET
dan POST
metode
-
Gunakan perintah berikut untuk menambahkan
GET
HTTP metode pada/validate
sumber daya. Perintah ini menciptakanGET
metode, menambahkanparams-only
validator, dan menetapkan string querypetType
sesuai kebutuhan.aws apigateway put-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --authorization-type "NONE" \ --request-validator-idaaa111
\ --request-parameters "method.request.querystring.petType=true"Gunakan perintah berikut untuk menambahkan
POST
HTTP metode pada/validate
sumber daya. Perintah ini membuatPOST
metode, menambahkanbody-only
validator, dan melampirkan model ke validator body-only.aws apigateway put-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --authorization-type "NONE" \ --request-validator-idbbb222
\ --request-models 'application/json'=PetStoreModel -
Gunakan perintah berikut untuk mengatur
200 OK
responsGET /validate
metode.aws apigateway put-method-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --status-code 200Gunakan perintah berikut untuk mengatur
200 OK
responsPOST /validate
metode.aws apigateway put-method-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --status-code 200 -
Gunakan perintah berikut untuk mengatur
Integration
dengan HTTP titik akhir tertentu untukGET /validation
metode ini.aws apigateway put-integration --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --type HTTP \ --integration-http-method GET \ --request-parameters '{"integration.request.querystring.type" : "method.request.querystring.petType"}' \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets'Gunakan perintah berikut untuk mengatur
Integration
dengan HTTP titik akhir tertentu untukPOST /validation
metode ini.aws apigateway put-integration --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --type HTTP \ --integration-http-method GET \ --uri 'http://petstore-demo-endpoint.execute-api.com/petstore/pets' -
Gunakan perintah berikut untuk menyiapkan respons integrasi untuk
GET /validation
metode ini.aws apigateway put-integration-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --status-code 200 \ --selection-pattern ""Gunakan perintah berikut untuk menyiapkan respons integrasi untuk
POST /validation
metode ini.aws apigateway put-integration-response --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --status-code 200 \ --selection-pattern ""
Untuk menguji API
-
Untuk menguji
GET
metode, yang akan melakukan validasi permintaan untuk string query, gunakan perintah berikut:aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GET \ --path-with-query-string '/validate?petType=dog'Hasilnya akan mengembalikan daftar
200 OK
dan anjing-anjingnya. -
Gunakan perintah berikut untuk menguji tanpa menyertakan string kueri
petType
aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method GETHasilnya akan mengembalikan
400
kesalahan. -
Untuk menguji
POST
metode, yang akan melakukan validasi permintaan untuk badan permintaan, gunakan perintah berikut:aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 400 }'Hasilnya akan mengembalikan pesan
200 OK
dan sukses. -
Gunakan perintah berikut untuk menguji menggunakan badan yang tidak valid.
aws apigateway test-invoke-method --rest-api-id
abc123
\ --resource-idefg456
\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 1000 }'Hasilnya akan mengembalikan
400
kesalahan, karena harga anjingnya melebihi harga maksimum yang ditentukan oleh model.
Untuk menghapus AWS CloudFormation tumpukan
Gunakan perintah berikut untuk menghapus AWS CloudFormation sumber daya Anda.
aws cloudformation delete-stack --stack-name request-validation-tutorial-cli
Siapkan validasi permintaan dasar menggunakan definisi Terbuka API
Anda dapat mendeklarasikan validator permintaan di API tingkat dengan menentukan satu set x-amazon-apigateway-request-validator. requestValidator objek objek di x-amazon-apigateway-request-validator objek peta untuk memilih bagian permintaan mana yang akan divalidasi. Dalam contoh Open API definition, ada dua validator:
all
validator yang memvalidasi tubuh, menggunakan modelRequestBodyModel
data, dan parameter.Model
RequestBodyModel
data mengharuskan JSON objek input berisiname
,type
, danprice
properti.name
Properti dapat berupa string apa pun,type
harus menjadi salah satu bidang enumerasi yang ditentukan (["dog", "cat", "fish"]
), danprice
harus berkisar antara 25 dan 500.id
Parameter tidak diperlukan.param-only
yang hanya memvalidasi parameter.
Untuk mengubah validator permintaan pada semua metodeAPI, tentukan x-amazon-apigateway-requestproperti -validator properti pada API tingkat definisi TerbukaAPI. Dalam contoh API definisi terbuka, all
validator digunakan pada semua API metode, kecuali jika diganti. Saat menggunakan model untuk memvalidasi isi, jika tidak ada jenis konten yang cocok ditemukan, validasi permintaan tidak dilakukan. Untuk menggunakan model yang sama terlepas dari jenis konten, tentukan $default
sebagai kunci.
Untuk mengaktifkan validator permintaan pada metode individual, tentukan x-amazon-apigateway-request-validator
properti di tingkat metode. Dalam contoh, Open API definition, param-only
validator menimpa all
validator pada metode. GET
Untuk mengimpor API contoh Buka ke API Gateway, lihat petunjuk berikut ke Impor API Regional ke API Gateway atau keImpor API yang dioptimalkan tepi ke API Gateway.