Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
PromoteFault politikası, API geliştiricilerinin hata akışı başlatmasını ve hata değişkenlerini
yazmanızı ve uygun yanıt durum kodlarını belirlemenizi öneririz. Ayrıca, feed'inizdeki
politika kullanarak hatayla ilgili akış değişkenlerini (ör. fault.name
, fault.type
,
ve fault.category
. Bu değişkenler analiz verilerinde ve Yönlendirici erişim günlüklerinde görülebilir.
bu hatanın doğru şekilde tespit edilmesi önemlidir.
Gerçek bir hatada hata olarak değerlendirilse bile belirli durumları hata olarak değerlendirmek için
veya API proxy'sinin arka uç sunucusunda gerçekleşmediğinden emin olun. Örneğin,
arka uç yanıtı her zaman istemci uygulamasına özel bir hata mesajı göndermek için proxy
gövde unavailable
dizesini içeriyorsa RaiseFault politikasını
aşağıdaki kod snippet'inde gösterilmiştir:
<!-- /antipatterns/examples/raise-fault-conditions-1.xml --> <TargetEndpoint name="default"> ... <Response> <Step> <Name>RF-Service-Unavailable</Name> <Condition>(message.content Like "*unavailable*")</Condition> </Step> </Response> ...
REQUESTFault politikasının adı, içindeki fault.name
olarak görünür
API Monitoring'de, Analytics ve Yönlendirici erişim günlüklerinde x_apigee_fault_policy
olarak gösterilir.
Bu, hatanın nedenini kolayca teşhis etmeye yardımcı olur.
Antipattern
Başka bir politika zaten hata bildirdikten sonra FaultRules içinde RaiseFault politikasını kullanma
API Proxy akışındaki bir OAuthV2 politikasının InvalidAccessToken
ile başarısız olduğu aşağıdaki örneği düşünün
hatası. Başarısız olmanız durumunda Edge, fault.name
değerini InvalidAccessToken
olarak ayarlar ve
ve tanımlanmış FaultRules'un uygulanmasıdır. FaultRule'da,
Her InvalidAccessToken
için özelleştirilmiş hata yanıtı gönderen RaiseFault
hatası oluşur. Ancak bir FaultRule içinde RaiseFault politikasının kullanılması fault.name
değişkeninin üzerine yazılır ve hatanın gerçek nedenini gizler.
<!-- /antipatterns/examples/raise-fault-conditions-2.xml --> <FaultRules> <FaultRule name="generic_raisefault"> <Step> <Name>RaiseFault</Name> <Condition>(fault.name equals "invalid_access_token") or (fault.name equals "InvalidAccessToken")</Condition> </Step> </FaultRule> </FaultRules>
Bir FaultRule'de RaiseFault politikasını tüm koşullar altında kullanma
Aşağıdaki örnekte, RaiseFault
adlı bir RaiseFault politikası fault.name
RaiseFault
değil:
<!-- /antipatterns/examples/raise-fault-conditions-3.xml --> <FaultRules> <FaultRule name="fault_rule"> .... <Step> <Name>RaiseFault</Name> <Condition>!(fault.name equals "RaiseFault")</Condition> </Step> </FaultRule> </FaultRules>
İlk senaryoda olduğu gibi fault.name
, fault.code
,
ve fault.policy
öğelerinin üzerine REQUESTFault politikasının adı yazılır. Bu davranış,
İzlemeye erişmeden, hangi politikanın hataya gerçekten neden olduğunu belirlemek neredeyse imkansızdır
hatasını gösteren veya sorunu yeniden oluşturan bir dosya oluşturun.
Hata akışının dışında bir HTTP 2xx yanıtı döndürmek için RaiseFault politikasının kullanılması.
Aşağıdaki örnekte, HandleOptionsRequest
adlı bir RaiseFault politikası aşağıdaki durumlarda yürütülür:
talep fiili OPTIONS
şeklindedir:
<!-- /antipatterns/examples/raise-fault-conditions-4.xml --> <PreFlow name="PreFlow"> <Request> … <Step> <Name>HandleOptionsRequest</Name> <Condition>(request.verb Equals "OPTIONS")</Condition> </Step> … </PreFlow>
Amaç, diğer politikaları işlemeden API istemcisine yanıtı hemen döndürmektir. Ancak, hata değişkenlerinde REQUESTFault politikasının adı, proxy'de hata ayıklamayı zorlaştırır. Planlamanın doğru yolu Akışları özel koşullarla kullanmak, tercih edilen davranış olarak CORS desteği ekleme.
Etki
Yukarıda açıklandığı gibi PromoteFault politikasının kullanılması,
Hata veren politikanın adı yerine RaiseFault politikasının adı. Analytics ve NGINX erişimi günlüklerinde
x_apigee_fault_code
ve x_apigee_fault_policy
değişkenleri
üzerine yazılır. API Monitoring'de, Fault Code
ve Fault Policy
üzerine yazılır. Bu davranış, sorun gidermeyi ve sorunları gidermeyi
hatanın gerçek nedeninin hangi politika olduğunu belirleyebilirsiniz.
API Monitoring'deki aşağıdaki ekran görüntüsünde,
Gördüğünüz gibi Hata Kodu ve Hata politikasının üzerine, genel RaiseFault
değerleri nedeniyle hatanın kök nedeninin günlüklerden belirlenmesini imkansız hale getirir:
En İyi Uygulama
Bir Edge politikası hata verdiğinde ve hata yanıtı mesajını özelleştirmek isterseniz YieldFault politikası yerine Ataması veya JavaScript politikalarını kullanmanız gerekir.
REQUESTFault politikası, hata olmayan bir akışta kullanılmalıdır. Yani, yalnızca belirli bir bir politikada veya arka uç sunucusunda gerçek bir hata oluşmamış olsa bile bir hata olarak kabul edilir hakkında daha fazla bilgi edinin. Örneğin, RaiseFault politikasını kullanarak bu zorunlu girişin Parametreler eksik veya hatalı söz dizimi içeriyor.
Bir hata kuralının işlenmesi sırasında hata tespit etmek isterseniz YükseltFault işlevini kullanabilirsiniz. fark etmez. Örneğin, hata işleyicinizin kendisi RaiseFault yöntemini kullanarak bildirmek istediğiniz bir hataya neden olabilir.