Validasi header

BERLAKU UNTUK: Semua tingkatAN API Management

Kebijakan validate-headers memvalidasi header respons terhadap skema API.

Penting

Jika Anda mengimpor API menggunakan versi API manajemen sebelum 2021-01-01-preview, kebijakan validate-headers mungkin tidak berfungsi. Anda mungkin perlu mengimpor ulang API Anda menggunakan versi API manajemen 2021-01-01-preview atau yang lebih baru.

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-headers specified-header-action="ignore | prevent | detect" unspecified-header-action="ignore | prevent | detect" errors-variable-name="variable name">
    <header name="header name" action="ignore | prevent | detect" />
</validate-headers>

Atribut

Atribut Deskripsi Wajib diisi Default
specified-header-action Tindakan yang harus dilakukan untuk header respons yang ditentukan dalam skema API. Ekspresi kebijakan diizinkan. Ya T/A
unspecified-header-action Tindakan yang harus dilakukan untuk header respons 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
{i>header Tambahkan satu atau beberapa elemen untuk header bernama untuk mengambil alih tindakan validasi default untuk header dalam respons. No

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-headers specified-header-action="ignore" unspecified-header-action="prevent" errors-variable-name="responseHeadersValidation" />

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: