Plugin rewrite request-respons memodifikasi permintaan HTTP sebelum mencapai backend Anda dan respons HTTP sebelum mencapai klien. Gunakan plugin ini untuk menambahkan, menimpa, atau menghapus parameter permintaan (Header, Query, dan Form) serta header respons, dan untuk mengganti kode status respons.
Operasi yang didukung
Plugin ini mengintersepsi lalu lintas pada dua titik dalam siklus hidup permintaan: setelah pemetaan parameter pada jalur inbound dan setelah pemetaan kode kesalahan pada jalur outbound. Pada masing-masing titik tersebut, plugin menerapkan aturan transformasi yang Anda konfigurasikan.
Operasi berikut didukung untuk permintaan HTTP:
addRequestParameterIfAbsent: Menambahkan parameter pada lokasi yang ditentukan (Header, Query, atau Form) dengan nama dan nilai yang diberikan. Jika parameter tersebut sudah ada, nilainya tidak diubah.putRequestParameter: Menambahkan parameter pada lokasi yang ditentukan dengan nama dan nilai yang diberikan. Jika parameter tersebut sudah ada, nilainya akan ditimpa.removeRequestParameter: Menghapus parameter dari lokasi yang ditentukan. Berikan lokasi dan nama parameternya.
Operasi berikut didukung untuk respons HTTP:
setResponseStatusCode: Mengganti kode status yang dikembalikan oleh layanan backend.addResponseHeaderIfAbsent: Menambahkan header respons dengan nama dan nilai yang diberikan. Jika header tersebut sudah ada, nilainya tidak diubah.putResponseHeader: Menambahkan header respons dengan nama dan nilai yang diberikan. Jika header tersebut sudah ada, nilainya akan ditimpa.removeResponseHeader: Menghapus header respons berdasarkan namanya.
Operasi permintaan mendukung tiga lokasi parameter: Header, Query, dan Form. Operasi respons hanya mendukung Header.
Transformasi permintaan dijalankan setelah pemetaan parameter, sebelum permintaan diteruskan ke backend. Transformasi respons dijalankan setelah pemetaan kode kesalahan, sebelum respons dikembalikan ke klien.
Contoh konfigurasi
Konfigurasikan plugin ini dalam format YAML atau JSON—keduanya menggunakan skema yang sama. Gunakan alat konversi YAML-ke-JSON untuk beralih antarformat. Templat YAML berikut mencakup semua operasi yang didukung:
---
addRequestParameterIfAbsent: # Tambahkan ke permintaan; lewati jika parameter sudah ada.
- name: userId
value: 123456
location: query
putRequestParameter: # Tambahkan ke permintaan; timpa jika parameter sudah ada.
- name: name
value: Jack
location: header
removeRequestParameter: # Hapus dari permintaan.
- name: address
location: form
setResponseStatusCode: 200 # Ganti kode status respons.
addResponseHeaderIfAbsent: # Tambahkan ke header respons; lewati jika header sudah ada.
- name: age
value: 18
putResponseHeader: # Tambahkan ke header respons; timpa jika header sudah ada.
- name: name
value: Alice
removeResponseHeader: # Hapus dari header respons.
- name: phone
Perbedaan utama antara addRequestParameterIfAbsent / addResponseHeaderIfAbsent dan putRequestParameter / putResponseHeader terletak pada perilaku saat parameter tersebut sudah ada:
addRequestParameterIfAbsent: API Gateway memeriksa apakahuserIdada dalam string kueri sebelum meneruskan permintaan. Jika tidak ada, API Gateway menyisipkannya dengan nilai123456. Jika sudah ada, API Gateway tidak mengubahnya—berguna untuk menetapkan nilai default tanpa menimpa nilai yang telah dikirim klien.putResponseHeader: API Gateway menetapkan header responsnamemenjadiAliceterlepas dari apakah header tersebut sudah ada. Jika header tersebut sudah ada, nilainya akan ditimpa—berguna untuk memastikan nilai header tertentu selalu diterapkan pada setiap respons.
Batasan
Plugin rewrite request-respons hanya tersedia pada instans khusus.
Untuk instans khusus yang dibeli sebelum 2 April 2024: jika konfigurasi gagal diterapkan, kirimkan tiket untuk melakukan upgrade versi instans.