Politika hataları hakkında bilmeniz gerekenler

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Bu konuda, politika hatalarının yapısı ve bir politika hatası oluştuğunda ayarlanan akış değişkenlerinin türleri açıklanmaktadır. Proxy'leriniz için hata işleme tasarlıyor ve uyguluyorsanız bu bilgiler esastır.

Bu konuda, Edge'de hata işleme sürecinin nasıl işlediğine dair genel bilginiz olduğu ve hata kurallarının ne olduğunu bildiğiniz varsayılmaktadır. İncelemeye ihtiyacınız varsa Hataları ele alma bölümüne bakın. Buradaki bilgiler, Politika hatası referansı sayfasında gezinmenize ve bu belgeyi kullanmanıza da yardımcı olur.

Varsayılan politika hatası yanıtı hakkında

Bir politika hata verdiğinde, Edge hemen hata akışına girer ve bir hata mesajı oluşturur. Sistem tarafından oluşturulan bu mesaj, iki bit bilgi içeren bir JSON nesnesidir: hata kodu ve hata dizesi.

Örneğin:

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.extractvariables.SourceMessageNotAvailable"
      },
      "faultstring":"foo message is not available for ExtractVariable: ParseJsonResponse"
   }
}

Bu hata mesajını hızlı bir şekilde özetleyelim:

Hata kodu şu şekilde bir önek ve hata adından oluşur: [prefix].[error_name]. Yukarıdaki örnekte "steps.extractvariables" ön eki, SourceMessageNotAvailable ise hata adıdır. Ön ek, hatanın ne tür bir politika tarafından oluşturulduğunu belirtir. Yukarıdaki örnekte, hatayı Değişkenleri Ayıklama politikasının oluşturduğunu ve hata adının SourceMessageNotAvailable olduğunu görebilirsiniz.

Hata dizesi, hatanın açıklamasını içerir. Hata dizesi genellikle hataya neden olan belirli bir sorunu bulmanıza yardımcı olacak ipuçları (politikanın adı, çözülmemiş bir değişkenin adı veya hataya katkıda bulunan şey gibi) içerir. Örneğin, yukarıdaki hata mesajında "foo" politikada referans verilen çözümlenmemiş mesaj değişkeninin, "ParseJsonResponse" ise hatayı tetikleyen politikanın adıdır.

Politika hatalarına özel değişkenler

Bir politika hatası tetiklendiğinde, hataya özel belirli akış değişkenleri doldurulur. Bu değişkenler, hata işlemede son derece yararlıdır. Hataları işleme konusunda açıklandığı gibi, sistem tarafından oluşturulan politika hatalarını yakalamak ve sonraki bir işlemi (ör. özel bir hata yanıtı oluşturmak) gerçekleştirmek, yaygın bir uygulamadır. Örneğin, güvenlik nedeniyle istemcilerin, Edge'in döndürdüğü gerçek hataları ve durum kodlarını görmesini engellemek isteyebilirsiniz.

fault.name değişkeni

Bir politika hata verdiğinde, fault.name akış değişkenini hata kodunun error_name kısmına ayarlar (bir önceki bölümde açıklandığı gibi). Hata kurallarını koşullu olarak yürütmek için bu değişkenin değerlendirilmesi çok yaygın bir durumdur.

fault.name değerini test eden bir hata kuralı örneği aşağıda verilmiştir:

<faultrule name="VariableOfNonMsgType"<>/faultrule><FaultRule name="Source Message Not Available Fault">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
</FaultRule>

Bir politika hatayı tetiklediğinde fault.name değişkeninin her zaman hata adına ayarlandığı unutulmamalıdır.

[prefix].[policy_name].failed değişkeni

fault.name dışında, geliştiricilerin sık sık kontrol ettiği bir başka değişken de [prefix].[policy_name].failed işaretidir. Bir politika yürütüldüğünde bu işaret doğru veya yanlış olarak ayarlanır. Hata kurallarında bu değerin ne zaman doğru olduğunu, diğer bir deyişle, bir hata oluşup oluşmadığını kontrol edebilirsiniz. [prefix].[policy_name].failed işaretini kontrol eden bir koşulun nasıl oluşturulacağı aşağıda açıklanmıştır. Bu değişkeni doğru şekilde kontrol etmek için iki şeyi bilmeniz gerekir:

  • Kontrol ettiğiniz politikanın adı. Bu, politikanın görünen adı değil, ad özelliğinin değeridir. Bu özellik her zaman politika tanımının XML'sine dahil edilir.
  • Kontrol ettiğiniz politika türüne özel bir önek. (Ön eki nasıl bulabileceğinizi aşağıda açıklayacağız.)

Açıklamak amacıyla, aşağıda başka bir hata kuralı örneği verilmiştir. Dış koşulda [prefix].[policy_name].failed değişken adının nasıl oluşturulduğuna dikkat edin. Bu durumda, ön ek extractvariables ve politika adı ParseJsonResponse olur. Bu durumda, hata kuralı yalnızca bu değişken doğru olduğunda yürütülür. İşte size bir ipucu: Hata kuralları birden çok adım içerebildiği için bu kalıp, hata kurallarını bloklar halinde düzenlemek için kullanışlı bir yoldur.

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Extract Variable Faults">
    <Step>
        <Name>AM-CustomErrorMessage</Name>
        <Condition>(fault.name Matches "SourceMessageNotAvailable") </Condition>
    </Step>
    <Condition>(extractvariables.ParseJsonResponse.failed = true) </Condition>
</FaultRule>

error ve message değişkenleri hakkında

error değişkeni yalnızca bir proxy'nin hata akışında kullanılabilir. Hata değişkeninden hata mesajı, durum kodu, neden ifadesi vb. yararlı bilgiler alabilirsiniz. Hata değişkenine ilişkin biçimlendirme kalıbı şöyledir:

error.[error_component] = [value]

Örneğin:

error.message = "request message is not available for ExtractVariable: ParseJsonResponse inç

ve

error.status.code = "500"

message değişkeni hata akışında da mevcuttur ve error değişkeniyle benzer amaçlar için kullanılabilir. Mesaj değişkeni, bağlamsal olduğu için özeldir. Bir istek akışında istek değişkeni gibi davranır ve yanıt akışında yanıt değerlerini almak/ayarlamak için kullanılabilir. Daha fazla bilgi edinmek isterseniz Mesaj değişkenleri için kullanım alanları bölümüne bakın.

error ve message dahil olmak üzere tüm Edge değişkenleri hakkında bilgi için Değişkenler referansı bölümüne bakın.