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 definisi OpenAPI.
Topik
Siapkan 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 metode API, konsol API Gateway menambahkan validator ke peta API. RequestValidators
Untuk mengikuti tutorial ini, Anda akan menggunakan CloudFormation template untuk membuat API Gateway API yang tidak lengkap. API ini memiliki /validator sumber daya dengan GET dan POST metode. Kedua metode terintegrasi dengan titik akhir http://petstore-demo-endpoint.execute-api.com/petstore/pets HTTP. Anda akan mengkonfigurasi dua jenis validasi permintaan:
-
Dalam
GETmetode ini, Anda akan mengkonfigurasi validasi permintaan untuk parameter string kueri URL. -
Dalam
POSTmetode ini, Anda akan mengonfigurasi validasi permintaan untuk badan permintaan.
Ini akan memungkinkan hanya panggilan API tertentu untuk melewati API.
Unduh dan unzip template pembuatan aplikasi untuk CloudFormation. Anda akan menggunakan template ini untuk membuat API yang tidak lengkap. Anda akan menyelesaikan langkah-langkah lainnya di konsol API Gateway.
Untuk membuat CloudFormation tumpukan
Buka 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 Berikutnya.
-
Untuk nama Stack, masukkan
request-validation-tutorial-consoledan kemudian pilih Berikutnya. -
Untuk opsi Konfigurasi tumpukan, pilih Berikutnya.
-
Untuk Kemampuan, akui bahwa CloudFormation dapat membuat sumber daya IAM di akun Anda.
-
Pilih Berikutnya, lalu pilih Kirim.
CloudFormation ketentuan sumber daya yang ditentukan dalam template. Diperlukan beberapa menit untuk menyelesaikan penyediaan sumber daya Anda. Ketika status CloudFormation tumpukan Anda adalah CREATE_COMPLETE, Anda siap untuk melanjutkan ke langkah berikutnya.
Untuk memilih API yang baru dibuat
Pilih
request-validation-tutorial-consoletumpukan yang baru dibuat.Pilih Sumber daya.
Di bawah Physical ID, pilih API Anda. 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 Modelsebagai 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 mengkonfigurasi validasi permintaan untuk metode GET
-
Di panel navigasi utama, pilih Resources, lalu pilih metode GET.
-
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 kueri URL, 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 kueri URL, lakukan hal berikut:
Pilih Tambahkan string kueri.
Untuk Nama, masukkan
petType.Untuk Dipetakan dari, masukkan
method.request.querystring.petType. Ini memetakanpetTypeke jenis hewan peliharaan.Untuk informasi selengkapnya tentang pemetaan data, lihat tutorial pemetaan data.
Tetap caching dimatikan.
Pilih Simpan.
Untuk menguji validasi permintaan untuk metode ini 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 OKdan daftar anjing-anjingnya.Untuk informasi tentang cara mengubah data keluaran ini, lihat tutorial pemetaan data.
-
Hapus
petType=dogdan pilih Uji. -
Tes metode akan mengembalikan
400kesalahan 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 metode POST.
-
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. Jika tidak ada jenis konten yang cocok ditemukan, validasi permintaan tidak dilakukan. Untuk menggunakan model yang sama terlepas dari jenis konten, masukkan$default.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 OKdan 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
400kesalahan 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 CloudFormation tumpukan
Buka CloudFormation konsol di https://console.aws.amazon.com/cloudformation
. -
Pilih 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 CloudFormation template untuk membuat API Gateway API yang tidak lengkap.
catatan
Ini bukan 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 titik akhir http://petstore-demo-endpoint.execute-api.com/petstore/pets HTTP. Anda akan mengkonfigurasi dua validasi permintaan berikut:
-
Pada
GETmetode ini, Anda akan membuatparams-onlyvalidator untuk memvalidasi parameter string kueri URL. -
Pada
POSTmetode ini, Anda akan membuatbody-onlyvalidator untuk memvalidasi badan permintaan.
Ini akan memungkinkan hanya panggilan API tertentu untuk melewati API.
Untuk membuat CloudFormation tumpukan
Unduh dan unzip template pembuatan aplikasi untuk 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 perintah Bash CLI yang biasa Anda gunakan (zipseperti) 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 CloudFormation tumpukan.
aws cloudformation create-stack --stack-name request-validation-tutorial-cli --template-body file://request-validation-tutorial-cli.zip --capabilities CAPABILITY_NAMED_IAM-
CloudFormation ketentuan sumber daya yang ditentukan dalam template. Diperlukan beberapa menit untuk menyelesaikan penyediaan sumber daya Anda. Gunakan perintah berikut untuk melihat status CloudFormation tumpukan Anda.
aws cloudformation describe-stacks --stack-name request-validation-tutorial-cli -
Ketika status 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 untuk API. Untuk tutorial ini, ID API adalah
abc123.ResourceId, yang merupakan ID untuk sumber daya validator tempat
GETdanPOSTmetode 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-idabc123\ --no-validate-request-body \ --validate-request-parameters \ --name params-onlyPerhatikan ID
params-onlyvalidator. -
Gunakan perintah berikut untuk membuat validator yang hanya memvalidasi badan permintaan.
aws apigateway create-request-validator --rest-api-idabc123\ --validate-request-body \ --no-validate-request-parameters \ --name body-onlyPerhatikan ID
body-onlyvalidator. -
Model diperlukan untuk menggunakan validasi permintaan pada badan permintaan yang masuk. Gunakan perintah berikut untuk mengimpor model.
aws apigateway create-model --rest-api-idabc123--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
$defaultsebagai kunci.
Untuk membuat GET dan POST metode
-
Gunakan perintah berikut untuk menambahkan metode
GETHTTP pada/validatesumber daya. Perintah ini menciptakanGETmetode, menambahkanparams-onlyvalidator, dan menetapkan string querypetTypesesuai kebutuhan.aws apigateway put-method --rest-api-idabc123\ --resource-idefg456\ --http-method GET \ --authorization-type "NONE" \ --request-validator-idaaa111\ --request-parameters "method.request.querystring.petType=true"Gunakan perintah berikut untuk menambahkan metode
POSTHTTP pada/validatesumber daya. Perintah ini membuatPOSTmetode, menambahkanbody-onlyvalidator, dan melampirkan model ke validator body-only.aws apigateway put-method --rest-api-idabc123\ --resource-idefg456\ --http-method POST \ --authorization-type "NONE" \ --request-validator-idbbb222\ --request-models 'application/json'=PetStoreModel -
Gunakan perintah berikut untuk mengatur
200 OKresponsGET /validatemetode.aws apigateway put-method-response --rest-api-idabc123\ --resource-idefg456\ --http-method GET \ --status-code 200Gunakan perintah berikut untuk mengatur
200 OKresponsPOST /validatemetode.aws apigateway put-method-response --rest-api-idabc123\ --resource-idefg456\ --http-method POST \ --status-code 200 -
Gunakan perintah berikut untuk mengatur
Integrationdengan titik akhir HTTP tertentu untukGET /validationmetode ini.aws apigateway put-integration --rest-api-idabc123\ --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
Integrationdengan titik akhir HTTP tertentu untukPOST /validationmetode ini.aws apigateway put-integration --rest-api-idabc123\ --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 /validationmetode ini.aws apigateway put-integration-response --rest-api-idabc123\ --resource-idefg456\ --http-method GET \ --status-code 200 \ --selection-pattern ""Gunakan perintah berikut untuk menyiapkan respons integrasi untuk
POST /validationmetode ini.aws apigateway put-integration-response --rest-api-idabc123\ --resource-idefg456\ --http-method POST \ --status-code 200 \ --selection-pattern ""
Untuk menguji API
-
Untuk menguji
GETmetode, yang akan melakukan validasi permintaan untuk string query, gunakan perintah berikut:aws apigateway test-invoke-method --rest-api-idabc123\ --resource-idefg456\ --http-method GET \ --path-with-query-string '/validate?petType=dog'Hasilnya akan mengembalikan daftar
200 OKdan anjing-anjingnya. -
Gunakan perintah berikut untuk menguji tanpa menyertakan string kueri
petTypeaws apigateway test-invoke-method --rest-api-idabc123\ --resource-idefg456\ --http-method GETHasilnya akan mengembalikan
400kesalahan. -
Untuk menguji
POSTmetode, yang akan melakukan validasi permintaan untuk badan permintaan, gunakan perintah berikut:aws apigateway test-invoke-method --rest-api-idabc123\ --resource-idefg456\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 400 }'Hasilnya akan mengembalikan pesan
200 OKdan sukses. -
Gunakan perintah berikut untuk menguji menggunakan badan yang tidak valid.
aws apigateway test-invoke-method --rest-api-idabc123\ --resource-idefg456\ --http-method POST \ --body '{"id": 1, "name": "bella", "type": "dog", "price" : 1000 }'Hasilnya akan mengembalikan
400kesalahan, karena harga anjingnya melebihi harga maksimum yang ditentukan oleh model.
Untuk menghapus CloudFormation tumpukan
Gunakan perintah berikut untuk menghapus CloudFormation sumber daya Anda.
aws cloudformation delete-stack --stack-name request-validation-tutorial-cli
Siapkan validasi permintaan dasar menggunakan definisi OpenAPI
Anda dapat mendeklarasikan validator permintaan di API level dengan menentukan satu set x-amazon-apigateway-request-Validators.requestValidator objek objek di x-amazon-apigateway-request-validator objek peta untuk memilih bagian permintaan mana yang akan divalidasi. Dalam definisi OpenAPI contoh, ada dua validator:
allvalidator yang memvalidasi tubuh, menggunakan modelRequestBodyModeldata, dan parameter.Model
RequestBodyModeldata mengharuskan objek input JSON berisiname,type, danpriceproperti.nameProperti dapat berupa string apa pun,typeharus menjadi salah satu bidang enumerasi yang ditentukan (["dog", "cat", "fish"]), danpriceharus berkisar antara 25 dan 500.idParameter tidak diperlukan.param-onlyyang hanya memvalidasi parameter.
Untuk mengaktifkan validator permintaan pada semua metode API, tentukan x-amazon-apigateway-requestproperti -validator properti di tingkat API definisi OpenAPI. Dalam definisi OpenAPI contoh, all validator digunakan pada semua metode API, 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, definisi OpenAPI, param-only validator menimpa validator pada metode. all GET
Untuk mengimpor contoh OpenAPI ke API Gateway, lihat petunjuk berikut ke Impor API Regional ke API Gateway atau ke. Impor API yang dioptimalkan tepi ke API Gateway