Durum kodunu doğrulama

UYGULANANLAR: Tüm API Management katmanları

İlke, validate-status-code YANıTlardaki HTTP durum kodlarını API şemasına göre doğrular. Bu ilke, yığın izlemeleri içerebilen arka uç hatalarının sızıntısını önlemek için kullanılabilir.

Not

Bu doğrulama ilkesi tarafından kullanılabilecek API şemasının boyutu üst sınırı 4 MB'tır. Şema bu sınırı aşarsa doğrulama ilkeleri çalışma zamanında hata döndürür. Bunu artırmak için lütfen desteğe başvurun.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. Portal, bu ilkeyi yapılandırmanıza yardımcı olmak için kılavuzlu, form tabanlı bir düzenleyici sağlar. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<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>

Özellikler

Öznitelik Açıklama Zorunlu Varsayılan
unspecified-status-code-action API şemasında belirtilmeyen yanıtlarda HTTP durum kodları için gerçekleştirilecek eylem . İlke ifadelerine izin verilir. Yes Yok
errors-variable-name Doğrulama hatalarını günlüğe kaydetmek için içindeki context.Variables değişkenin adı. İlke ifadelerine izin verilmez. Hayır YOK

Öğeler

Veri Akışı Adı Açıklama Gerekli
durum kodu Yanıtlardaki durum kodları için varsayılan doğrulama eylemini geçersiz kılmak için HTTP durum kodları için bir veya daha fazla öğe ekleyin. Hayır

durum kodu öznitelikleri

Öznitelik Açıklama Zorunlu Varsayılan
kod Doğrulama eylemini geçersiz kılmak için HTTP durum kodu. Yes Yok
eylem API şemasında belirtilmemiş eşleşen durum kodu için gerçekleştirilecek eylem . Durum kodu API şemasında belirtilirse, bu geçersiz kılma geçerli olmaz. Yes Yok

Eylemler

İçerik doğrulama ilkeleri, api isteğindeki bir varlığı doğrularken API Management'ın API şemasına karşı gerçekleştirilen bir eylemi belirten bir veya daha fazla öznitelik içerir.

  • API şemasında temsil edilen öğeler için ve ilkeye bağlı olarak API şemasında temsil edilmeen öğeler için bir eylem belirtilebilir.

  • İlkenin alt öğesinde belirtilen bir eylem, üst öğesi için belirtilen bir eylemi geçersiz kılar.

Kullanılabilir eylemler:

Eylem Açıklama
yoksayma Doğrulamayı atlayın.
Önle İstek veya yanıt işlemeyi engelleyin, ayrıntılı doğrulama hatasını günlüğe kaydedip bir hata döndürin. İlk hata kümesi algılandığında işleme kesintiye uğrar.
detect İstek veya yanıt işlemeyi kesintiye uğratmadan günlük doğrulama hataları.

Kullanım

Kullanım notları

  • Bu ilke, ilke bölümünde yalnızca bir kez kullanılabilir.

Günlükler

İlke yürütme sırasındaki doğrulama hataları hakkındaki ayrıntılar, ilkenin kök öğesindeki özniteliğinde errors-variable-name belirtilen değişkene context.Variables kaydedilir. Bir prevent eylemde yapılandırıldığında, doğrulama hatası daha fazla istek veya yanıt işlemeyi engeller ve ayrıca özelliğine context.LastError yayılır.

Hataları araştırmak için bağlam değişkenlerindeki hataları Uygulama Analizler günlüğe kaydetmek için bir izleme ilkesi kullanın.

Performans üzerindeki etkileri

Doğrulama ilkesi eklemek API aktarım hızını etkileyebilir. Aşağıdaki genel ilkeler geçerlidir:

  • API şema boyutu ne kadar büyük olursa aktarım hızı o kadar düşük olur.
  • İstek veya yanıttaki yük ne kadar büyük olursa aktarım hızı o kadar düşük olur.
  • API şemasının boyutu, performans üzerinde yükün boyutundan daha büyük bir etkiye sahiptir.
  • Boyutu birkaç megabayt olan bir API şemasında doğrulama, bazı koşullar altında istek veya yanıt zaman aşımlarına neden olabilir. Etki, hizmetin Tüketim ve Geliştirici katmanlarında daha belirgindir.

Doğrulama ilkelerinin API aktarım hızı üzerindeki etkisini değerlendirmek için beklenen üretim iş yüklerinizle yük testleri gerçekleştirmenizi öneririz.

Örnek

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

Doğrulama hataları

API Management, aşağıdaki biçimde içerik doğrulama hataları oluşturur:

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

Aşağıdaki tabloda doğrulama ilkelerinin tüm olası hataları listeledik.

  • Ayrıntılar: Hataları araştırmak için kullanılabilir. Herkese açık olarak paylaşılmamalıdır.
  • Genel yanıt: İstemciye hata döndürüldü. Uygulama ayrıntılarını sızdırmaz.

Doğrulama ilkesi eylemi belirttiğinde prevent ve bir hata ürettiğinde, API management'tan gelen yanıt bir HTTP durum kodu içerir: İlke gelen bölümünde uygulandığında 400 ve giden bölümde ilke uygulandığında 502.

Ad Tür Doğrulama kuralı Ayrıntılar Genel yanıt Eylem
içeriği doğrulama
RequestBody SizeLimit İsteğin gövdesi {size} bayt uzunluğunda ve yapılandırılmış {maxSize} bayt sınırını aşıyor. İsteğin gövdesi {size} bayt uzunluğunda ve {maxSize} bayt sınırını aşıyor. algılama /önleme
ResponseBody SizeLimit Yanıtın gövdesi {size} bayt uzunluğunda ve yapılandırılmış {maxSize} bayt sınırını aşıyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{messageContentType} RequestBody Belirtilme -miş Belirtilmemiş {messageContentType} içerik türüne izin verilmiyor. Belirtilmemiş {messageContentType} içerik türüne izin verilmiyor. algılama /önleme
{messageContentType} ResponseBody Belirtilme -miş Belirtilmemiş {messageContentType} içerik türüne izin verilmiyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
ApiSchema API'nin şeması yok veya çözümlenemedi. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
ApiSchema API'nin şeması tanımları belirtmez. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{messageContentType} RequestBody / ResponseBody MissingDefinition API'nin şeması{messageContentType} içerik türüyle ilişkili {definitionName} tanımını içermiyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{messageContentType} RequestBody IncorrectMessage İsteğin gövdesi{messageContentType} içerik türüyle ilişkili {definitionName} tanımına uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
İsteğin gövdesi{messageContentType} içerik türüyle ilişkili {definitionName} tanımına uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
algılama /önleme
{messageContentType} ResponseBody IncorrectMessage Yanıtın gövdesi{ messageContentType} içerik türüyle ilişkili {definitionName} tanımına uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
RequestBody Validationexception İsteğin gövdesi {messageContentType} içerik türü için doğrulanamıyor.

{özel durum ayrıntıları}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
ResponseBody Validationexception Yanıtın gövdesi {messageContentType} içerik türü için doğrulanamıyor.

{özel durum ayrıntıları}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
validate-parameters / validate-headers
{paramName} / {headerName} QueryParameter / PathParameter / RequestHeader Belirtilme -miş Belirtilmemiş {path parametresi / sorgu parametresi / header} {paramName} izin verilmiyor. Belirtilmemiş {path parametresi / sorgu parametresi / header} {paramName} izin verilmiyor. algılama /önleme
{headerName} ResponseHeader Belirtilme -miş Belirtilmemiş {headerName} üst bilgilerine izin verilmiyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
ApiSchema API'nin şeması yok veya çözümlenemedi. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
ApiSchema API şeması tanımları belirtmez. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{paramName} QueryParameter / PathParameter / RequestHeader / ResponseHeader MissingDefinition API'nin şeması {query parametresi / yol parametresi / header} {paramName} ile ilişkili {definitionName} tanımını içermiyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage İstek, {query parametresi / yol parametresi / header} {paramName} için birden çok değer içeremez. İstek, {query parametresi / yol parametresi / header} {paramName} için birden çok değer içeremez. algılama /önleme
{headerName} ResponseHeader IncorrectMessage Yanıt, {headerName} üst bilgisi için birden çok değer içeremez. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage {query parametresi / yol parametresi / header} {paramName} değeri tanıma uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
{query parametresi / yol parametresi / header} {paramName} değeri tanıma uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
algılama /önleme
{headerName} ResponseHeader IncorrectMessage {headerName} üst bilgisinin değeri tanıma uymuyor.

{valError.Message} Satır: {valError.LineNumber}, Position: {valError.LinePosition}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{paramName} QueryParameter / PathParameter / RequestHeader IncorrectMessage {query parametresi / yol parametresi / header} {paramName} değeri tanıma göre ayrıştırılamaz.

{örn. message}
{query parametresi / yol parametresi / header} {paramName} değerinin tanımına göre ayrıştırılamadı.

{örn. message}
algılama /önleme
{headerName} ResponseHeader IncorrectMessage {headerName} üst bilgisinin değeri tanıma göre ayrıştırılamıyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{paramName} QueryParameter / PathParameter / RequestHeader Validationerror {Sorgu parametresi / Yol parametresi / Header} {paramName} doğrulanamıyor.

{özel durum ayrıntıları}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
{headerName} ResponseHeader Validationerror {headerName} üst bilgisi doğrulanamıyor.

{özel durum ayrıntıları}
İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme
validate-status-code
{status-code} StatusCode Belirtilme -miş Yanıt durum koduna {status-code} izin verilmiyor. İstek bir iç hata nedeniyle işlenemedi. API sahibine başvurun. algılama /önleme

Aşağıdaki tabloda, olası İleti değerleriyle birlikte doğrulama hatasının tüm olası Neden değerleri listelenir:

Nedeni İleti
Hatalı istek Bağlam değişkeni için {Details}, istemci için {Public response}
Yanıta izin verilmiyor Bağlam değişkeni için {Details}, istemci için {Public response}

İlkelerle çalışma hakkında daha fazla bilgi için bkz: