Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
Bir hata koşuluna yanıt olarak özel bir mesaj oluşturur. RaiseFault değerini kullanarak bir Belirli bir koşul ortaya çıktığında istekte bulunan uygulamaya döndürülen hata yanıtı.
Hataların işlenmesi hakkında genel bilgi için Hataları işleme başlıklı makaleye bakın.
Örnekler
FaultResponse'u Döndür
En yaygın kullanımda, RaiseFault işlevi
uygulama isteğinde bulunur. Örneğin bu politika,404
yük yok:
<RaiseFault name="404"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <StatusCode>404</StatusCode> <ReasonPhrase>The resource requested was not found</ReasonPhrase> </Set> </FaultResponse> </RaiseFault>
Return FaultResponse Yükü
Daha karmaşık bir örnek, HTTP ile birlikte özel bir hata yanıtı yükü döndürmeyi içerir. başlıkları ve HTTP durum kodu içerir. Aşağıdaki örnekte hata yanıtı doldurulur Edge'in arka uçtan aldığı HTTP durum kodunu içeren bir XML mesajıyla hizmetini ve oluşan hatanın türünü içeren bir üstbilgiyi içerir:
<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'u dinamik olarak doldurmak için kullanılabilecek tüm değişkenlerin listesi için görmek için Değişkenler referans
Hizmet açıklama metni hatalarını işleme
RaiseFault politikası hakkında
Apigee Edge, RaiseFault türünde bir politika kullanarak özel istisna işleme gerçekleştirmenize olanak tanır. Bu, assignMessage politikası, bir hata koşuluna yanıt olarak özel bir hata yanıtı oluşturmanıza olanak tanır.
İstekte bulunan uygulamaya döndürülen bir hata yanıtı tanımlamak için RaiseFault politikasını kullanın. belirli bir hata durumu ortaya çıktığında. Hata yanıtı HTTP üstbilgileri, sorgu parametrelerini ve mesaj yükünü içerir. Özel hata yanıtı, uygulama geliştiriciler için daha faydalı olabilir ve uygulama son kullanıcılarıyla ilgili genel hata mesajları ya da HTTP yanıt kodlarına kıyasla önemli bir fark yaratır.
REQUESTFault politikası yürütüldüğünde, kontrolü mevcut akıştan Hata'ya aktarır bu daha sonra, istekte bulunan istemci uygulamasına belirlenen hata yanıtını döndürür. mesajı Akışı, Hata akışına geçer, başka politika işleme yapılmaz. Kalan tümü işleme adımları atlanır ve hata yanıtı doğrudan istekte bulunan kullanıcıya gönderilir uygulamasını indirin.
RaiseFault değerini bir ProxyEndpoint veya TargetEndpoint'te kullanabilirsiniz. Genellikle, raporunuza bir Koşul'u BoostFault politikası. REQUESTFault yürütüldükten sonra, Apigee normal şekilde çalışır hata işleme, hiçbir hata kuralı yoksa işlemeyi sonlandırır. hakkında daha fazla bilgi edinin.
Öğe referansı
Öğe referansı, RaiseFault 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>
<RaiseFault> özellikler
<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ı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile 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 özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name
özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<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> öğe
(İsteğe bağlı) Akıştaki çözülmemiş değişken hatalarını yok sayar. Geçerli değerler: doğru/yanlış.
Varsayılan true
.
<FaultResponse> öğe
(İsteğe bağlı) İstekte bulunan istemciye döndürülen yanıt mesajını tanımlar. FaultResponse kullanımları AtananMessage politikasıyla aynı ayarlara sahiptir (Private Cloud için Apigee Edge'de kullanılamaz).
<FaultResponse><AssignVariable> öğe
Bir hedef akış değişkenine değer atar.
Akış değişkeni mevcut değilse AssignVariable
bunu oluşturur.
Örneğin, myFaultVar
adlı değişkeni ayarlamak için aşağıdaki kodu kullanın
bulabilirsiniz:
<FaultResponse> <AssignVariable> <Name>myFaultVar</Name> <Value>42</Value> </AssignVariable> ... </FaultResponse>
Daha sonra, bu değişkene daha sonra RaiseFault politikasındaki mesaj şablonlarında başvurabilirsiniz. Ayrıca, FaultRule'a ekli bir politika da değişkene erişebilir. Örneğin, AttributionMessage politikası, PromoteFault'ta ayarlanan değişkeni kullanarak hata yanıtı:
<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>
REQUESTFault politikasındaki <AssignVariable>
,
AssignmentMessage politikasındaki <AssignVariable>
öğesi. Bu işlevin
şu anda Private Cloud için Apigee Edge'de kullanıma sunulmamıştır.
<FaultResponse><Add>/<Headers> öğe
Hata mesajına HTTP üstbilgileri ekler. Boş başlığın
<Add><Headers/></Add>
herhangi bir üstbilgi eklemiyor. Bu
örnek, request.user.agent akış değişkeninin değerini
kullanabilirsiniz.
<Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add>
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Copy> öğe
source
özelliğini hata mesajıyla alakalı.
<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> öğe
Belirtilen HTTP üstbilgisini kaynaktan hata mesajına kopyalar. Tüm üstbilgileri kopyalamak için
belirtin: <Copy><Headers/></Copy>.
<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" ise yalnızca bir tane var değeri kopyalanmazsa kopyalanmaz.
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Copy>/<StatusCode> öğe
Kaynak özelliği tarafından hataya belirtilen nesneden kopyalanacak HTTP durum kodu mesajını alırsınız.
<Copy source='response'> <StatusCode>404</StatusCode> </Copy>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Copy>/<ReasonPhrase> öğe
Kaynak özellik tarafından hataya belirtilen nesneden kopyalanacak neden açıklaması mesajını alırsınız.
<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> öğe
Belirtilen HTTP üstbilgilerini hata iletisinden kaldırır. Tüm üstbilgileri kaldırmak için
<Remove><Headers/></Remove>
Bu örnek,
İletideki user-agent
üstbilgisi.
<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 ikinci "h3" değerini kaldırır. "h3" ise yalnızca bir tane var değerine ayarlanırsa kaldırılmaz.
Varsayılan: |
Yok |
Bulunma: |
İsteğe bağlı |
Tür: |
Dize |
<FaultResponse><Set> öğe
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> öğe
Hata mesajındaki HTTP üstbilgilerini ayarlar veya üzerine yazar. Boş başlığın
<Set><Headers/></Set>
herhangi bir üstbilgi ayarlamadı. Bu örnek,
user-agent
üstbilgisini
<AssignTo>
öğesi.
<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> öğe
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üne, variablePrefix
ve
Aşağıda gösterildiği gibi ayırıcı karakterlere sahip variableSuffix
özellikleri
örneğine bakalım.
<Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set>
veya 16.08.17 sürümünden itibaren değişken eklemek için süslü ayraçlar 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 | İsteğe bağlı olarak bir akış değişkeninde baştaki sınırlayıcıyı belirtir çünkü JSON yükleri varsayılan "{" değerini kullanamaz. karakteriyle ayrılır. | İsteğe bağlı | Char |
variableSuffix | İsteğe bağlı olarak akışta sondaki sınırlayıcıyı belirtir değişkeni, çünkü JSON yükleri varsayılan "}" değerini kullanamaz karakteriyle ayrılır. | İsteğe bağlı | Char |
<FaultResponse>/<Set>/<StatusCode> öğe
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>/<ReasonPhrase> öğe
Yanıtın neden ifadesini ayarlar.
<Set source='request'> <ReasonPhrase>The resource requested was not found.</ReasonPhrase> </Set>
Varsayılan: |
false |
Bulunma: |
İsteğe bağlı |
Tür: |
Boole |
<ShortFaultReason> öğe
Yanıtta kısa bir hata nedeninin gösterileceğini belirtir:
<ShortFaultReason>true|false</ShortFaultReason>
Politikanın yanıtında hatanın nedeni varsayılan olarak şöyledir:
"fault":{"faultstring":"Raising fault. Fault name : Raise-Fault-1","detail":{"errorcode":"errorCode"}}}
Mesajı daha okunabilir hale getirmek için <ShortFaultReason>
öğesini ayarlayabilirsiniz
faultstring
değerini yalnızca politika adıyla kısaltmak için true olarak ayarlayın:
"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, politikaların ve Akışların çalışma zamanında HTTP'ye göre dinamik davranışını etkinleştirir üstbilgileri, ileti içeriğini veya Akış bağlamını yansıtabilir. Aşağıdaki önceden tanımlanmış Akış değişkenleri kullanılabilir devam edebilir. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı bölümüne bakın.
Değişken | Tür | İzin | Açıklama |
---|---|---|---|
fault.name | Dize | Salt Okunur | REQUESTFault politikası yürütüldüğünde bu değişken her zaman dizeye ayarlanır
RaiseFault |
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 yoksa boş bir dize döndürür. |
RaiseFault kullanımına örnek
Aşağıdaki örnekte,
Gelen istekte zipcode
adlı queryparam
. Eğer
queryparam
mevcut değilse akış, PromoteFault aracılığıyla bir hata başlatır:
<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ğıda, REQUESTFault'ta nelerin yer alacağı 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, döndürülen hata kodları, hata mesajları ve hata değişkenleri açıklanmaktadır. bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi edinmek için bkz. Politika hataları ve politika hataları hakkında bilmeniz gerekenler Hataları işleme.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden |
---|---|---|
steps.raisefault.RaiseFault |
500 | Hata dizesini inceleyin. |
Dağıtım hataları
Yok.
Hata değişkenleri
Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, hatanın şurada belirtildiği gibi adıdır: Yukarıdaki Çalışma zamanı hataları tablosu. Hata adı en son hata kodunun bir bölümüdür. | fault.name = "RaiseFault" |
raisefault.policy_name.failed |
policy_name, politikanın kullanıcı tarafından belirtilen adıdır ortaya koydu. | 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ıyla (.xsd
) tanımlanır. Referans olması amacıyla politika şemaları
GitHub'da bulabilirsiniz.
İlgili konular
Hataları işleme bölümüne bakın.