Minta validasi untuk WebSocket API di API Gateway - APIGerbang Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Minta validasi untuk WebSocket API di API Gateway

Anda dapat mengonfigurasi API Gateway untuk melakukan validasi pada permintaan rute sebelum melanjutkan dengan permintaan integrasi. Jika validasi gagal, API Gateway gagal permintaan tanpa memanggil backend Anda, mengirimkan respons gateway “Badan permintaan buruk” ke klien, dan menerbitkan hasil validasi di Log. CloudWatch Menggunakan validasi dengan cara ini mengurangi panggilan yang tidak perlu ke backend API Anda.

Ekspresi pemilihan model

Anda dapat menggunakan ekspresi pemilihan model untuk memvalidasi permintaan secara dinamis dalam rute yang sama. Validasi model terjadi jika Anda memberikan ekspresi pemilihan model untuk integrasi proxy atau non-proxy. Anda mungkin perlu mendefinisikan $default model sebagai fallback ketika tidak ada model yang cocok ditemukan. Jika tidak ada model yang cocok dan $default tidak ditentukan, validasi gagal. Ekspresi seleksi terlihat seperti Route.ModelSelectionExpression dan mengevaluasi kunci untukRoute.RequestModels.

Saat menentukan rute untuk WebSocket API, Anda dapat menentukan ekspresi pemilihan model secara opsional. Ekspresi ini dievaluasi untuk memilih model yang akan digunakan untuk validasi tubuh ketika permintaan diterima. Ekspresi mengevaluasi ke salah satu entri dalam rute. requestmodels

Sebuah model dinyatakan sebagai skema JSON dan menggambarkan struktur data dari badan permintaan. Sifat ekspresi seleksi ini memungkinkan Anda memilih model secara dinamis untuk divalidasi saat runtime untuk rute tertentu. Untuk informasi tentang cara membuat model, lihatModel data untuk REST APIs.

Menyiapkan validasi permintaan menggunakan konsol API Gateway

Contoh berikut menunjukkan cara mengatur validasi permintaan pada rute.

Pertama, Anda membuat model, dan kemudian Anda membuat rute. Selanjutnya, Anda mengonfigurasi validasi permintaan pada rute yang baru saja Anda buat. Terakhir, Anda menerapkan dan menguji API Anda. Untuk menyelesaikan tutorial ini, Anda memerlukan WebSocket API dengan $request.body.action ekspresi pemilihan rute dan titik akhir integrasi untuk rute baru Anda.

Anda juga wscat perlu terhubung ke API Anda. Untuk informasi selengkapnya, lihat Gunakan wscat untuk terhubung ke WebSocket API dan mengirim pesan ke sana.

Untuk membuat model
  1. Masuk ke konsol API Gateway di https://console.aws.amazon.com/apigateway.

  2. Pilih WebSocket API.

  3. Di panel navigasi utama, pilih Model.

  4. Pilih Buat model.

  5. Untuk Nama, masukkan emailModel.

  6. Untuk jenis Konten, masukkanapplication/json.

  7. Untuk skema Model, masukkan model berikut:

    { "$schema": "http://json-schema.org/draft-04/schema#", "type" : "object", "required" : [ "address"], "properties" : { "address": { "type": "string" } } }

    Model ini mengharuskan permintaan berisi alamat email.

  8. Pilih Simpan.

Pada langkah ini, Anda membuat rute untuk WebSocket API Anda.

Untuk membuat rute
  1. Di panel navigasi utama, pilih Rute.

  2. Pilih Buat rute.

  3. Untuk kunci Rute, masukkansendMessage.

  4. Pilih jenis integrasi dan tentukan titik akhir integrasi. Untuk mengetahui informasi selengkapnya, lihat Integrasi untuk WebSocket API di API Gateway.

  5. Pilih Buat rute.

Pada langkah ini, Anda menyiapkan validasi permintaan untuk sendMessage rute tersebut.

Untuk mengatur validasi permintaan
  1. Pada tab Permintaan rute, di bawah Pengaturan permintaan rute, pilih Edit.

  2. Untuk ekspresi pemilihan Model, masukkan${request.body.messageType}.

    API Gateway menggunakan messageType properti untuk memvalidasi permintaan yang masuk.

  3. Pilih Tambahkan model permintaan.

  4. Untuk kunci Model, masukkanemail.

  5. Untuk Model, pilih EmailModel.

    API Gateway memvalidasi pesan masuk dengan messageType properti yang disetel ke email terhadap model ini.

    catatan

    Jika API Gateway tidak dapat mencocokkan ekspresi pemilihan model dengan kunci model, maka ia memilih $default model. Jika tidak ada $default model, maka validasi gagal. Untuk API produksi, kami menyarankan Anda membuat $default model.

  6. Pilih Simpan perubahan.

Pada langkah ini, Anda menerapkan dan menguji API Anda.

Untuk menerapkan dan menguji API Anda
  1. Pilih Deploy API.

  2. Pilih tahap yang diinginkan dari daftar dropdown atau masukkan nama tahap baru.

  3. Pilih Deploy.

  4. Di panel navigasi utama, pilih Tahapan.

  5. Salin WebSocket URL API Anda. URL akan terlihat seperti wss://abcdef123.execute-api.us-east-2.amazonaws.com/production.

  6. Buka terminal baru dan jalankan wscat perintah dengan parameter berikut.

    wscat -c wss://abcdef123.execute-api.us-west-2.amazonaws.com/production
    Connected (press CTRL+C to quit)
  7. Gunakan perintah berikut untuk menguji API Anda.

    {"action": "sendMessage", "messageType": "email"}
    {"message": "Invalid request body", "connectionId":"ABCD1=234", "requestId":"EFGH="}

    API Gateway akan gagal permintaan.

    Gunakan perintah berikutnya untuk mengirim permintaan yang valid ke API Anda.

    {"action": "sendMessage", "messageType": "email", "address": "mary_major@example.com"}