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 politika hatası oluştuğunda ayarlanan akış değişkeni türleri açıklanmaktadır. Bu bilgiler, proxy'leriniz için hata işleme özelliğini tasarlıyor ve uyguluyorsanız gereklidir.

Bu konuda, Edge'de hata işlemenin nasıl işlediğine dair genel bir anlayışa sahip olduğunuz ve hata kurallarının ne olduğunu bildiğiniz varsayılmaktadır. İnceleme yapılması gerekiyorsa Hataları işleme başlıklı makaleyi inceleyin. Buradaki bilgiler, Politika hatası referansında gezinmenize ve bu referansı kullanmanıza da yardımcı olur.

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

Bir politika hata oluşturduğunda Edge hemen hata akışına girer ve bir hata mesajı oluşturur. Sistem tarafından oluşturulan bu mesaj, iki bilgi parçası içeren bir JSON nesnesidir: errorcode ve faultstring.

Örneğin:

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

Bu hata mesajını kısaca inceleyelim:

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

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

Politika hatalarına özel değişkenler

Bir politika hatası tetiklendiğinde, hataya özgü 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 özel hata yanıtı oluşturmak gibi bir işlem 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 bölümüne ayarlar (önceki bölümde açıklandığı gibi). Bu değişken, hata kurallarını koşullu olarak uygulamak için değerlendirildiğinde çok yaygın bir şekilde değerlendirilir.

Aşağıda, fault.name değerini test eden örnek bir hata kuralı 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 bir hatayı tetiklediğinde fault.name değişkeninin her zaman hata adına ayarlandığını unutmayın.

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

fault.name dışında, geliştiricilerin genellikle kontrol ettiği bir diğer değişken de [prefix].[policy_name].failed işaretidir. Bu işaret, bir politika yürütüldüğünde doğru veya yanlış değerine ayarlanır. Hata kurallarında, true (doğru) değerini ne zaman kontrol edeceğinizi, yani bir hata oluşup oluşmadığını kontrol etmenizi öneririz. [prefix].[policy_name].failed işaretini kontrol eden bir koşulu nasıl oluşturacağınız aşağıda açıklanmıştır. Bu değişkeni doğru şekilde kontrol etmek için iki bilgiye ihtiyacınız var:

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

Bunu açıklamak için başka bir hata kuralı örneğini aşağıda bulabilirsiniz. Dış koşulda [prefix].[policy_name].failed değişken adının nasıl oluşturulduğuna dikkat edin. Bu durumda önek extractvariables, politika adı ise ParseJsonResponse olur. Bu durumda, hata kuralı yalnızca bu değişken doğruysa yürütülür. Bir ipucu da verelim: Hata kuralları birden fazla adım içerebileceğinden bu kalıp, hata kurallarını bloklara ayırmanın güzel bir yoludur.

<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 proxy'nin hata akışında kullanılabilir. Hata değişkeninden hata mesajı, durum kodu, neden ifadesi gibi faydalı bilgiler edinebilirsiniz. Hata değişkeninin biçimlendirme kalıbı:

error.[error_component] = [value]

Örneğin:

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

ve

error.status.code = "500"

message değişkeni hata akışında da mevcut olup error değişkeniyle benzer amaçlar için kullanılabilir. Mesaj değişkeni, bağlama dayalı olduğu için özeldir. İstek 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 istiyorsanız 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şkenleriyle ilgili bilgi için Değişkenler referansı bölümüne bakın.