Bagikan melalui


Memvalidasi kode status

BERLAKU UNTUK: Semua tingkatAN API Management

Kebijakan validate-status-code memvalidasi kode status HTTP sebagai respons terhadap skema API. Kebijakan ini dapat digunakan untuk mencegah kebocoran kesalahan backend, yang dapat berisi jejak tumpukan.

Catatan

Ukuran maksimum skema API yang dapat digunakan oleh kebijakan validasi ini adalah 4 MB. Jika skema melebihi batas ini, kebijakan validasi akan mengembalikan kesalahan pada runtime. Untuk meningkatkannya, hubungi dukungan.

Catatan

Tetapkan elemen kebijakan dan elemen turunan dalam urutan yang disediakan dalam pernyataan kebijakan. Untuk membantu Anda mengonfigurasi kebijakan ini, portal menyediakan editor berbasis formulir berikut panduannya. Pelajari lebih lanjut cara mengatur atau mengedit kebijakan API Management.

Pernyataan kebijakan

<validate-status-code unspecified-status-code-action="ignore | prevent | detect" errors-variable-name="variable name">
    <status-code code="HTTP status code number" action="ignore | prevent | detect" />
</validate-status-code>

Atribut

Atribut Deskripsi Wajib diisi Default
unspecified-status-code-action Tindakan yang harus dilakukan untuk kode status HTTP dalam tanggapan yang tidak ditentukan dalam skema API. Ekspresi kebijakan diizinkan. Ya T/A
errors-variable-name Nama variabel di context.Variables untuk mencatat kesalahan validasi. Ekspresi kebijakan tidak diizinkan. No T/A

Elemen

Nama Deskripsi Wajib diisi
status-code Tambahkan satu atau beberapa elemen untuk kode status HTTP untuk mengambil alih tindakan validasi default untuk kode status sebagai respons. No

atribut kode status

Atribut Deskripsi Wajib diisi Default
kode Kode status HTTP untuk mengganti tindakan validasi. Ya T/A
tindakan Tindakan yang harus dilakukan untuk kode status yang cocok, yang tidak ditentukan dalam skema API. Jika kode status ditentukan dalam skema API, penggantian ini tidak berlaku. Ya T/A

Tindakan

Kebijakan validasi konten mencakup satu atau beberapa atribut yang menentukan tindakan, yang diambil API Management saat memvalidasi entitas dalam permintaan API atau respons terhadap skema API.

  • Tindakan dapat ditentukan untuk elemen yang diwakili dalam skema API dan, tergantung pada kebijakan, untuk elemen yang tidak diwakili dalam skema API.

  • Tindakan yang ditentukan dalam elemen anak kebijakan akan menggantikan tindakan yang ditentukan untuk induknya.

Tindakan yang tersedia:

Tindakan Deskripsi
abaikan Lewati validasi.
cegah Blokir permintaan atau pemrosesan respons, catat kesalahan validasi verbose, dan tampilkan kesalahan. Pemrosesan terganggu ketika serangkaian kesalahan pertama terdeteksi.
deteksi Catat kesalahan validasi, tanpa mengganggu pemrosesan permintaan atau respons.

Penggunaan

Catatan penggunaan

  • Kebijakan ini hanya dapat digunakan sekali di bagian kebijakan.

Log

Detail tentang kesalahan validasi selama eksekusi kebijakan dicatat ke variabel di context.Variables yang ditentukan dalam atribut errors-variable-name dalam elemen akar kebijakan. Saat dikonfigurasi dalam tindakan prevent, kesalahan validasi memblokir permintaan atau pemrosesan respons lebih lanjut dan juga disebarluaskan ke properti context.LastError.

Untuk menyelidiki kesalahan, gunakan kebijakan pelacakan untuk mencatat kesalahan dari variabel konteks ke Wawasan Aplikasi.

Implikasi kinerja

Menambahkan kebijakan validasi dapat memengaruhi throughput API. Prinsip umum berikut ini berlaku:

  • Semakin besar ukuran skema API, semakin rendah throughputnya.
  • Semakin besar muatan dalam permintaan atau respons, semakin rendah throughputnya.
  • Ukuran skema API memiliki dampak yang lebih besar pada performa daripada ukuran muatan.
  • Validasi terhadap skema API yang berukuran beberapa megabyte dapat menyebabkan waktu permintaan atau respons habis dalam beberapa kondisi. Efeknya lebih terasa di tingkat Konsumsi dan Pengembang layanan.

Sebaiknya lakukan uji beban dengan beban kerja produksi yang diharapkan untuk menilai dampak kebijakan validasi pada throughput API.

Contoh

<validate-status-code unspecified-status-code-action="prevent" errors-variable-name="responseStatusCodeValidation" />

Kesalahan validasi

API Management menghasilkan kesalahan validasi konten dalam format berikut:

{
 "Name": string,
 "Type": string,
 "ValidationRule": string,
 "Details": string,
 "Action": string
}

Tabel berikut ini mencantumkan semua kemungkinan kesalahan kebijakan validasi.

  • Detail: Dapat digunakan untuk menyelidiki kesalahan. Tidak dimaksudkan untuk dibagikan ke publik.
  • Respons publik: Kesalahan yang ditampilkan ke klien. Tidak membocorkan detail implementasi.

Saat kebijakan validasi menentukan tindakan prevent dan menghasilkan kesalahan, respons dari manajemen API menyertakan kode status HTTP: 400 saat kebijakan diterapkan di bagian masuk, dan 502 saat kebijakan diterapkan di bagian keluar.

Nama Jenis Aturan validasi Rincian Respons publik Perbuatan
validate-content
RequestBody SizeLimit Isi permintaan panjangnya {size} byte dan melebihi batas konfigurasi {maxSize} byte. Isi permintaan panjangnya {size} byte dan melebihi batas {maxSize} byte. deteksi / cegah
ResponseBody SizeLimit Isi respons panjangnya {size} byte dan melebihi batas konfigurasi {maxSize} byte. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{messageContentType} RequestBody Tidak disebutkan Tipe konten yang tidak ditentukan {messageContentType} tidak diizinkan. Tipe konten yang tidak ditentukan {messageContentType} tidak diizinkan. deteksi / cegah
{messageContentType} ResponseBody Tidak disebutkan Tipe konten yang tidak ditentukan {messageContentType} tidak diizinkan. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
ApiSchema Skema API tidak ada atau tidak dapat diselesaikan. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
ApiSchema Skema API tidak menentukan definisi. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{messageContentType} RequestBody / ResponseBody MissingDefinition Skema API tidak berisi definisi {definitionName}, yang dikaitkan dengan jenis konten {messageContentType}. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{messageContentType} RequestBody IncorrectMessage Isi permintaan tidak sesuai dengan definisi {definitionName}, yang dikaitkan dengan jenis konten {messageContentType}.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
Isi permintaan tidak sesuai dengan definisi {definitionName}, yang dikaitkan dengan jenis konten {messageContentType}.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
deteksi / cegah
{messageContentType} ResponseBody IncorrectMessage Isi respons tidak sesuai dengan definisi {definitionName}, yang dikaitkan dengan jenis konten {messageContentType}.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
RequestBody ValidationException Isi permintaan tidak dapat divalidasi untuk jenis konten {messageContentType}.

{exception details}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
ResponseBody ValidationException Isi respons tidak dapat divalidasi untuk jenis konten {messageContentType}.

{exception details}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
validate-parameters / validate-headers
{paramName} / {headerName} QueryParameter / PathParameter / RequestHeader Tidak disebutkan {path parameter / query parameter / header} {paramName} yang tidak ditetapkan tidak diizinkan. {path parameter / query parameter / header} {paramName} yang tidak ditetapkan tidak diizinkan. deteksi / cegah
{headerName} ResponseHeader Tidak disebutkan Header {headerName} yang tidak ditentukan tidak diperbolehkan. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
ApiSchema Skema API tidak ada atau tidak dapat diselesaikan. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
ApiSchema Skema API tidak menentukan definisi. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{paramName} QueryParameter / PathParameter / RequestHeader / ResponseHeader MissingDefinition Skema API tidak berisi definisi {definitionName}, yang dikaitkan dengan parameter {query parameter / path parameter / header} {paramName}. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage Permintaan tidak boleh berisi beberapa nilai untuk {query parameter / path parameter / header} {paramName}. Permintaan tidak boleh berisi beberapa nilai untuk {query parameter / path parameter / header} {paramName}. deteksi / cegah
{headerName} ResponseHeader IncorrectMessage Respons tidak boleh berisi beberapa nilai untuk header {headerName}. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage Nilai {query parameter / path parameter / header} {paramName} tidak sesuai dengan definisi.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
Nilai {query parameter / path parameter / header} {paramName} tidak sesuai dengan definisi.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
deteksi / cegah
{headerName} ResponseHeader IncorrectMessage Nilai header {headerName} tidak sesuai dengan definisi.

{valError.Message} Baris: {valError.LineNumber}, Posisi: {valError.LinePosition}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage Nilai {query parameter / path parameter / header} {paramName} tidak dapat diuraikan berdasarkan defisini.

{ex.Message}
Nilai {query parameter / path parameter / header} {paramName} tidak dapat diuraikan berdasarkan defisini.

{ex.Message}
deteksi / cegah
{headerName} ResponseHeader IncorrectMessage Nilai header {headerName} tidak dapat diuraikan berdasarkan defisini. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{paramName} QueryParameter / PathParameter / RequestHeader ValidationError {Query parameter / Path parameter / Header} {paramName} tidak dapat divalidasi.

{exception details}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
{headerName} ResponseHeader ValidationError Header {headerName} tidak dapat divalidasi.

{exception details}
Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah
validate-status-code
{status-code} StatusCode Tidak disebutkan Kode status respons {status-code} tidak diperbolehkan. Permintaan tidak dapat diproses karena kesalahan layanan internal. Hubungi pemilik API. deteksi / cegah

Tabel berikut ini mencantumkan semua nilai Alasan yang mungkin dari kesalahan validasi bersama dengan nilai Pesan yang mungkin:

Alasan Pesan
Permintaan Buruk {Details} untuk variabel konteks, {Public response} untuk klien
Respons tidak diperbolehkan {Details} untuk variabel konteks, {Public response} untuk klien

Untuk informasi selengkapnya tentang bekerja dengan kebijakan, lihat: