Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne
Bir hata koşuluna yanıt olarak özel bir mesaj oluşturur. Belirli bir koşul ortaya çıktığında istekte bulunan uygulamaya döndürülecek bir hata yanıtı tanımlamak için ParentFault'u kullanın.
Hataların ele alınması hakkında genel bilgi için Hataları işleme konusuna bakın.
Sana Özel
Dönüş Hata Yanıtı
En yaygın kullanımlarda PromoteFault, istekte bulunan uygulamaya özel bir hata yanıtı döndürmek için kullanılır. Örneğin, bu politika yük içermeyen bir 404
durum kodu döndürür:
<RaiseFault name="404"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <StatusCode>404</StatusCode> <ReasonPhrase>The resource requested was not found</ReasonPhrase> </Set> </FaultResponse> </RaiseFault>
Dönüş FaultResponse Yükü
Daha karmaşık bir örnek, HTTP üst bilgileri ve HTTP durum koduyla birlikte özel bir hata yanıtı yükü döndürmeyi içerir. Aşağıdaki örnekte hata yanıtı, Edge tarafından arka uç hizmetinden alınan HTTP durum kodunu içeren bir XML mesajı ve oluşan hatanın türünü içeren bir başlıkla doldurulur:
<RaiseFault name="ExceptionHandler"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <Payload contentType="text/xml"> <root>Please contact support@company.com</root> </Payload> <StatusCode>{response.status.code}</StatusCode> <ReasonPhrase>Server error</ReasonPhrase> </Set> <Add> <Headers> <Header name="FaultHeader">{fault.name}</Header> </Headers> </Add> </FaultResponse> </RaiseFault>
FaultResponse mesajlarını dinamik olarak doldurmak için kullanılabilecek tüm değişkenlerin listesi için Değişkenler referansı bölümüne bakın.
Hizmet çağrısı hatalarını işleme
GrowFault politikası hakkında
Apigee Edge, GrowFault türünde bir politika kullanarak özel istisna işleme işlemi gerçekleştirmenizi sağlar. assignMessage politikasına benzeyen ParentFault politikası, bir hata koşuluna yanıt olarak özel bir hata yanıtı oluşturmanıza olanak tanır.
Belirli bir hata koşulu ortaya çıktığında istekte bulunan uygulamaya döndürülecek bir hata yanıtı tanımlamak için PromoteFault politikasını kullanın. Hata yanıtı HTTP üst bilgileri, sorgu parametreleri ve bir mesaj yükünden oluşabilir. Özel bir hata yanıtı, uygulama geliştiriciler ve uygulama son kullanıcıları için genel hata mesajları veya HTTP yanıt kodlarından daha yararlı olabilir.
GrowFault politikası yürütüldüğünde, kontrolü mevcut akıştan Hata akışına aktarır ve daha sonra, belirtilen hata yanıtını istekte bulunan istemci uygulamasına döndürür. Mesaj Akışı Hata akışına geçtiğinde, başka politika işlemleri gerçekleşmez. Kalan tüm işleme adımları atlanır ve hata yanıtı doğrudan istekte bulunan uygulamaya döndürülür.
GrowFault'u bir ProxyEndpoint veya TargetEndpoint'te kullanabilirsiniz. Genellikle {6/}Fault politikasına bir Koşul eklersiniz. GrowFault yürütüldükten sonra Apigee, normal hata işlemeyi yaparak FaultRules'u değerlendirir veya tanımlanmış hata kuralı yoksa isteğin işlenmesini sonlandırır.
Öğe referansı
Öğe referansı, GrowFault politikasının öğelerini ve özelliklerini açıklar.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <RaiseFault async="false" continueOnError="false" enabled="true" name="Raise-Fault-1"> <DisplayName>RaiseFault 1</DisplayName> <FaultResponse> <AssignVariable> <Name/> <Value/> </AssignVariable> <Add> <Headers/> </Add> <Copy source="request"> <Headers/> <StatusCode/> <ReasonPhrase/> </Copy> <Remove> <Headers/> </Remove> <Set> <Headers/> <Payload/> <ReasonPhrase/> <StatusCode/> </Set> </FaultResponse> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </RaiseFault>
<liftFault> özellikleri
<RaiseFault async="false" continueOnError="false" enabled="true" name="Raise-Fault-1">
Aşağıdaki tabloda, tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için |
Yok | Gerekli |
continueOnError |
Bir politika başarısız olduğunda hata döndürülmesi için Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özellik kullanımdan kaldırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğesi
Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<ignoreUnresolvedVariables> öğesi
(İsteğe bağlı) Akıştaki çözülmemiş değişken hatalarını yok sayar. Geçerli değerler: true/false.
Varsayılan true
.
<FaultResponse> öğesi
(İsteğe bağlı) İstekte bulunan istemciye döndürülen yanıt mesajını tanımlar. FaultResponse, assignMessage politikası ile aynı ayarları kullanır (Private Cloud için Apigee Edge'de kullanılamaz).
<FaultResponse><AssignmentVariable> öğesi
Hedef akış değişkenine değer atar.
Akış değişkeni yoksa AssignVariable
tarafından oluşturulur.
Örneğin, GrowFault politikasında myFaultVar
adlı değişkeni ayarlamak için aşağıdaki kodu kullanın:
<FaultResponse> <AssignVariable> <Name>myFaultVar</Name> <Value>42</Value> </AssignVariable> ... </FaultResponse>
Daha sonra ParentFault politikasında mesaj şablonlarında bu değişkene başvurabilirsiniz. Ayrıca, FaultRule'a ekli bir politika da değişkene erişebilir. Örneğin, aşağıdaki AttributionMessage politikası, hata yanıtında bir üst bilgi ayarlamak için ParentFault'ta ayarlanan değişkeni kullanır:
<AssignMessage enabled="true" name="Assign-Message-1"> <Add> <Headers> <Header name="newvar">{myFaultVar}</Header> </Headers> </Add> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignTo createNew="false" transport="http" type="response"/> </AssignMessage>
PromoteFault politikasındaki <AssignVariable>
, AssignmentMessage politikasındaki <AssignVariable>
öğesiyle aynı söz dizimini kullanır. Bu işlevin şu anda Private Cloud için Apigee Edge'de mevcut olmadığını hatırlatmak isteriz.
<FaultResponse><Add>/<Headers> öğesi
Hata mesajına HTTP üstbilgileri ekler. Boş olan <Add><Headers/></Add>
üst bilgisinin herhangi bir üstbilgi eklemediğini unutmayın. Bu örnekte, request.user.agent akış değişkeninin değeri başlığa kopyalanır.
<Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add>
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Kopyala> öğesi
source
özelliği tarafından belirtilen mesajdaki bilgileri hata mesajına to olarak kopyalar.
<Copy source="request"> <Headers/> <StatusCode/> <ReasonPhrase/> </Copy>
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
Özellikler
<Copy source="response">
Özellik | Açıklama | Varlık | Tür |
---|---|---|---|
source |
Kopyanın kaynak nesnesini belirtir.
|
İsteğe bağlı | Dize |
<FaultResponse><Copy>/<Headers> öğesi
Belirtilen HTTP üstbilgisini kaynaktan hata mesajına kopyalar. Tüm üst bilgileri kopyalamak için <Copy><Headers/></Copy>.
değerini belirtin.
<Copy source='request'> <Headers> <Header name="headerName"/> </Headers> </Copy>
Aynı ada sahip birden fazla üstbilgi varsa aşağıdaki söz dizimini kullanın:
<Copy source='request'> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy>
Bu örnekte "h1", "h2" ve ikinci "h3" değeri kopyalanır. "h3"ün yalnızca bir değeri varsa bu değer kopyalanmaz.
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Kopyala>/<StatusCode> öğesi
Kaynak özelliği tarafından belirtilen nesneden hata mesajına kopyalanacak HTTP durum kodu.
<Copy source='response'> <StatusCode>404</StatusCode> </Copy>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Kopyala>/<Neden Terimi> öğesi
Kaynak özelliği tarafından belirtilen nesneden hata mesajına kopyalanacak neden açıklaması.
<Copy source='response'> <ReasonPhrase>The resource requested was not found.</ReasonPhrase> </Copy>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Remove>/<Headers> öğesi
Belirtilen HTTP üstbilgilerini hata mesajından kaldırır. Tüm üst bilgileri kaldırmak için <Remove><Headers/></Remove>
değerini belirtin. Bu örnek, user-agent
üstbilgisini iletiden kaldırır.
<Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove>
Aynı ada sahip birden fazla üstbilgi varsa aşağıdaki söz dizimini kullanın:
<Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove>
Bu örnek, "h1", "h2" ve "h3"ün ikinci değerini kaldırır. "h3"ün yalnızca bir değeri varsa bu değer kaldırılmaz.
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Set> öğesi
Hata mesajındaki bilgileri ayarlar.
<Set> <Headers/> <Payload> </Payload> <StatusCode/> <ReasonPhrase/> </Set>
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Yok |
<FaultResponse>/<Set>/<Headers> öğesi
Hata mesajındaki HTTP üstbilgilerini belirler veya bunların üzerine yazar. Boş üst bilgi (<Set><Headers/></Set>
) herhangi bir üst bilgi ayarlamaz. Bu örnekte user-agent
üst bilgisi, <AssignTo>
öğesiyle belirtilen mesaj değişkenine ayarlanır.
<Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set>
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse>/<Set>/<Payload> öğesi
Hata mesajının yükünü ayarlar.
<Set> <Payload contentType="text/plain">test1234</Payload> </Set>
Bir JSON yükü ayarlayın:
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set>
Bir JSON yükünde, aşağıdaki örnekte gösterildiği gibi variablePrefix
ve variableSuffix
özelliklerini sınırlayıcı karakterlerle kullanarak değişkenler ekleyebilirsiniz.
<Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set>
veya 16.08.17 bulut sürümünden itibaren değişken eklemek için süslü ayraçlar da kullanabilirsiniz:
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set>
XML'de karma bir yük ayarlayın:
<Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </Payload> </Set>
Varsayılan: |
|
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
Özellikler
<Payload contentType="content_type" variablePrefix="char" variableSuffix="char">
Özellik | Açıklama | Varlık | Tür |
---|---|---|---|
contentType |
contentType belirtilirse değeri, |
İsteğe bağlı | Dize |
variablePrefix | JSON yükleri varsayılan "{" karakterini kullanamayacağı için isteğe bağlı olarak bir akış değişkenindeki baş sınırlayıcıyı belirtir. | İsteğe bağlı | Karakter |
variableSuffix | JSON yükleri varsayılan "}" karakterini kullanamayacağı için isteğe bağlı olarak bir akış değişkenindeki son sınırlayıcıyı belirtir. | İsteğe bağlı | Karakter |
<FaultResponse>/<Set>/<StatusCode> öğesi
Yanıtın durum kodunu ayarlar.
<Set source='request'> <StatusCode>404</StatusCode> </Set>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Boole |
<FaultResponse>/<Set>/<WhyVisibility> öğesi
Yanıtın neden ifadesini belirler.
<Set source='request'> <ReasonPhrase>The resource requested was not found.</ReasonPhrase> </Set>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Boole |
<ShortFaultWhy> öğesi
Yanıtta kısa bir hata nedeninin gösterileceğini belirtir:
<ShortFaultReason>true|false</ShortFaultReason>
Varsayılan olarak, politika yanıtındaki hata nedeni şu şekildedir:
"fault":{"faultstring":"Raising fault. Fault name : Raise-Fault-1","detail":{"errorcode":"errorCode"}}}
Mesajı daha okunabilir hale getirmek için faultstring
öğesini yalnızca politika adıyla kısaltmak amacıyla <ShortFaultReason>
öğesini true olarak ayarlayabilirsiniz:
"fault":{"faultstring":"Raise-Fault-1","detail":{"errorcode":"errorCode"}}}
Geçerli değerler: true/false(varsayılan).
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Boole |
Akış değişkenleri
Akış değişkenleri, HTTP üstbilgileri, mesaj içeriği veya Akış bağlamına göre çalışma zamanında politikaların ve Akışların dinamik davranışını etkinleştirir. Aşağıdaki önceden tanımlanmış Akış değişkenleri, bir {6/}Fault politikası yürütüldükten sonra kullanılabilir. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı başlıklı makaleyi inceleyin.
Değişken | Tür | İzin | Açıklama |
---|---|---|---|
fault.name | Dize | Salt Okunur | GrowFault politikası yürütüldüğünde bu değişken her zaman RaiseFault dizesine ayarlanır. |
fault.type | Dize | Salt Okunur | Hatadaki hata türünü ve yoksa boş bir dize döndürür. |
fault.category | Dize | Salt Okunur | Hatadaki hata kategorisini ve mevcut değilse boş bir dize döndürür. |
GrowFault kullanımı örneği
Aşağıdaki örnekte, gelen istekte zipcode
adlı bir queryparam
varlığını zorunlu kılmak için bir Koşul kullanılmaktadır. Bu queryparam
mevcut değilse akış, riseFault aracılığıyla bir hata verir:
<Flow name="flow-1"> <Request> <Step> <Name>RF-Error-MissingQueryParam</Name> <Condition>request.queryparam.zipcode = null</Condition> </Step> ... </Request> ... <Condition>(proxy.pathsuffix MatchesPath "/locations") and (request.verb = "GET")</Condition> </Flow>Aşağıdaki şekilde, PromoteFault öğesinde ne olacağı gösterilmektedir:
<RaiseFault name='RF-Error-MissingQueryParam'> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <Payload contentType='application/json'>{ "error" : { "code" : 400.02, "message" : "invalid request. Pass a zipcode queryparam." } } </Payload> <StatusCode>400</StatusCode> <ReasonPhrase>Bad Request</ReasonPhrase> </Set> </FaultResponse> </RaiseFault>
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ve hata mesajları ile döndürülen hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden |
---|---|---|
steps.raisefault.RaiseFault |
500 | Hata dizesine bakın. |
Dağıtım hataları
Yok.
Hata değişkenleri
Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name = "RaiseFault" |
raisefault.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | raisefault.RF-ThrowError.failed = true |
Örnek hata yanıtı
{ "fault":{ "detail":{ "errorcode":"steps.raisefault.RaiseFault" }, "faultstring":"Raising fault. Fault name: [name]" } }
Şema
Her politika türü, bir XML şeması (.xsd
) ile tanımlanır. Referans olarak, GitHub'da politika şemaları bulunabilir.
İlgili konular
Hataları işleme bölümüne bakın