आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
क्या
किसी गड़बड़ी की स्थिति में पसंद के मुताबिक मैसेज जनरेट करता है. riseFault का इस्तेमाल करके किसी खास स्थिति के आने पर, अनुरोध करने वाले ऐप्लिकेशन को गड़बड़ी वाला रिस्पॉन्स मिलता है.
गड़बड़ियों को ठीक करने के बारे में सामान्य जानकारी के लिए, गड़बड़ियां ठीक करना देखें.
सैंपल
रिटर्न FaultResponse
सामान्य इस्तेमाल में, RaiseFault का इस्तेमाल
अनुरोध करने वाला ऐप्लिकेशन. उदाहरण के लिए, यह नीति इसके साथ 404
स्टेटस कोड दिखाएगी
कोई पेलोड नहीं:
<RaiseFault name="404"> <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> <FaultResponse> <Set> <StatusCode>404</StatusCode> <ReasonPhrase>The resource requested was not found</ReasonPhrase> </Set> </FaultResponse> </RaiseFault>
रिटर्न FaultResponse पेलोड
एक ज़्यादा जटिल उदाहरण में एचटीटीपी के साथ-साथ, कस्टम गड़बड़ी के रिस्पॉन्स पेलोड लौटाना शामिल है हेडर और एक एचटीटीपी स्टेटस कोड होना चाहिए. इस उदाहरण में, गड़बड़ी के रिस्पॉन्स की जानकारी अपने-आप भर गई है के साथ एक एक्सएमएल मैसेज होता है, जिसमें बैकएंड से Edge को मिला एचटीटीपी स्टेटस कोड होता है सेवा और हेडर में होने वाली गड़बड़ी का टाइप:
<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 को डाइनैमिक तरीके से भरने के लिए उपलब्ध हैं मैसेज दिखाई दे, तो वैरिएबल रेफ़रंस
सेवा के कॉल आउट की गड़बड़ियां मैनेज करना
RaiseFault की नीति के बारे में जानकारी
Apigee Edge की मदद से, RaiseFault टाइप की नीति का इस्तेमाल करके, अपवाद के तौर पर सेट किए गए कस्टम इवेंट को मैनेज किया जा सकता है. RaiseFault की नीति, assignMessage की नीति, आपको किसी गड़बड़ी की स्थिति के जवाब में, ज़रूरत के हिसाब से गड़बड़ी का रिस्पॉन्स जनरेट करने की सुविधा देता है.
अनुरोध करने वाले ऐप्लिकेशन को गड़बड़ी का जो रिस्पॉन्स मिलता है उसके बारे में बताने के लिए, RaiseFault की नीति का इस्तेमाल करें जब गड़बड़ी की कोई खास स्थिति पैदा हो. गड़बड़ी के रिस्पॉन्स में एचटीटीपी हेडर, क्वेरी शामिल हो सकती है पैरामीटर और मैसेज पेलोड. गड़बड़ी के मुताबिक कस्टम रिस्पॉन्स, ऐप्लिकेशन डेवलपर के लिए ज़्यादा काम का हो सकता है और ऐप्लिकेशन के असली उपयोगकर्ताओं की तुलना, सामान्य गड़बड़ी के मैसेज या एचटीटीपी रिस्पॉन्स कोड से की जाती है.
लागू किए जाने के बाद, RaiseFault नीति, कंट्रोल को मौजूदा फ़्लो से गड़बड़ी पर ट्रांसफ़र कर देती है फ़्लो की मदद से, अनुरोध करने वाले क्लाइंट ऐप्लिकेशन को गड़बड़ी का सही रिस्पॉन्स भेजा जाता है. जब मैसेज फ़्लो, गड़बड़ी के फ़्लो में स्विच हो जाता है. साथ ही, नीति को और प्रोसेस नहीं किया जाएगा. बाकी सभी इसमें प्रोसेस की प्रोसेस के चरणों को बायपास किया जाता है. इसके बाद, गलती से मिले रिस्पॉन्स को सीधे अनुरोध वाले पेज पर भेज दिया जाता है है.
ProxyEndpoint या TargetEndpoint में RaiseFault का इस्तेमाल किया जा सकता है. आम तौर पर, आपको शर्त को शिकायत करने से जुड़ी नीति. RaiseFault के लागू होने के बाद, Apigee सामान्य तरीके से काम करेगा प्रोसेसिंग में गड़बड़ी अगर कोई गड़बड़ी नियम तय नहीं किया गया है या कोई गड़बड़ी नियम तय नहीं किया गया है, तो यह प्रोसेस बंद कर देता है विकल्प मौजूद है.
एलिमेंट का रेफ़रंस
एलिमेंट का रेफ़रंस, RaiseFault की नीति में शामिल एलिमेंट और एट्रिब्यूट के बारे में बताता है.
<?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> एट्रिब्यूट
<RaiseFault async="false" continueOnError="false" enabled="true" name="Raise-Fault-1">
यहां दी गई टेबल में, ऐसे एट्रिब्यूट के बारे में बताया गया है जो नीति के सभी पैरंट एलिमेंट में एक जैसे होते हैं:
एट्रिब्यूट | ब्यौरा | डिफ़ॉल्ट | मौजूदगी |
---|---|---|---|
name |
नीति का अंदरूनी नाम. इसके अलावा, नीति को लेबल करने के लिए, |
लागू नहीं | ज़रूरी है |
continueOnError |
किसी नीति के काम न करने पर, गड़बड़ी दिखाने के लिए नीति के लागू होने के बाद भी फ़्लो को एक्ज़ीक्यूट करने के लिए, इसे |
गलत | वैकल्पिक |
enabled |
नीति को लागू करने के लिए, नीति को बंद करने के लिए, |
सही | वैकल्पिक |
async |
यह एट्रिब्यूट अब काम नहीं करता. |
गलत | बहिष्कृत |
<DisplayName> एलिमेंट
इस कॉलम में नीति को लेबल करने के लिए, name
एट्रिब्यूट के साथ-साथ इस्तेमाल करें
मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर, जिसका नाम अलग और सामान्य भाषा में है.
<DisplayName>Policy Display Name</DisplayName>
डिफ़ॉल्ट |
लागू नहीं अगर आप इस एलिमेंट को छोड़ देते हैं, तो नीति की |
---|---|
मौजूदगी | वैकल्पिक |
टाइप | स्ट्रिंग |
<IgnoreUnresolvedVariables> एलिमेंट
(ज़रूरी नहीं) फ़्लो में वैरिएबल की ऐसी किसी भी गड़बड़ी को अनदेखा करता है जिसे ठीक नहीं किया गया है. मान्य वैल्यू: सही/गलत.
डिफ़ॉल्ट true
.
<FaultResponse> एलिमेंट
(ज़रूरी नहीं) यह अनुरोध करने वाले क्लाइंट को भेजे गए जवाब के मैसेज के बारे में बताता है. FaultResponse का इस्तेमाल वही सेटिंग जो assignMessage नीति की हैं (प्राइवेट क्लाउड के लिए Apigee Edge में उपलब्ध नहीं).
<FaultResponse><AssignVariable> एलिमेंट
यह फ़ंक्शन किसी डेस्टिनेशन फ़्लो वैरिएबल के लिए वैल्यू असाइन करता है.
अगर फ़्लो वैरिएबल मौजूद नहीं है, तो AssignVariable
इसे बनाता है.
उदाहरण के लिए, myFaultVar
नाम का वैरिएबल सेट करने के लिए, इस कोड का इस्तेमाल करें
के लिए:
<FaultResponse> <AssignVariable> <Name>myFaultVar</Name> <Value>42</Value> </AssignVariable> ... </FaultResponse>
इसके बाद, उस वैरिएबल को बाद में RaiseFault नीति में जाकर मैसेज टेंप्लेट में देखा जा सकता है. साथ ही, FaultRule से जुड़ी नीति, वैरिएबल को ऐक्सेस कर सकती है. उदाहरण के लिए, निम्न PendingMessage नीति, RaiseFault में सेट किए गए वैरिएबल का इस्तेमाल हेडर को सेट करने के लिए करती है गड़बड़ी का जवाब:
<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>
riseFault नीति में मौजूद <AssignVariable>
में उसी सिंटैक्स का इस्तेमाल किया गया है जो
AssignmentMessage नीति में <AssignVariable>
एलिमेंट. ध्यान दें कि इस सुविधा के लिए
फ़िलहाल, प्राइवेट क्लाउड के लिए Apigee Edge में उपलब्ध नहीं है.
<FaultResponse><Add>/<Headers> एलिमेंट
गड़बड़ी के मैसेज में एचटीटीपी हेडर जोड़ता है. ध्यान दें कि खाली हेडर
<Add><Headers/></Add>
कोई हेडर नहीं जोड़ता. यह
उदाहरण के तौर पर, request.user.agent फ़्लो वैरिएबल की वैल्यू को
हेडर.
<Add> <Headers> <Header name="user-agent">{request.user.agent}</Header> </Headers> </Add>
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse><Copy> एलिमेंट
इसके ज़रिए बताए गए मैसेज से जानकारी कॉपी करता है
source
एट्रिब्यूट की वैल्यू को है.
<Copy source="request"> <Headers/> <StatusCode/> <ReasonPhrase/> </Copy>
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
विशेषताएं
<Copy source="response">
एट्रिब्यूट | ब्यौरा | मौजूदगी | टाइप |
---|---|---|---|
source |
कॉपी का सोर्स ऑब्जेक्ट बताता है.
|
वैकल्पिक | स्ट्रिंग |
<FaultResponse><Copy>/<Headers> एलिमेंट
बताए गए एचटीटीपी हेडर को सोर्स से गड़बड़ी के मैसेज में कॉपी करता है. सभी हेडर कॉपी करने के लिए,
<Copy><Headers/></Copy>.
तय करें
<Copy source='request'> <Headers> <Header name="headerName"/> </Headers> </Copy>
अगर एक ही नाम वाले कई हेडर हैं, तो नीचे दिया गया सिंटैक्स इस्तेमाल करें:
<Copy source='request'> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Copy>
इस उदाहरण में "h1", "h2", और "h3" की दूसरी वैल्यू कॉपी की गई है. अगर "h3" है में केवल एक है मान है, तो इसकी कॉपी नहीं की जाती है.
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse><Copy>/<StatusCode> एलिमेंट
सोर्स एट्रिब्यूट के दिए गए ऑब्जेक्ट से गड़बड़ी में कॉपी करने के लिए एचटीटीपी स्टेटस कोड दिखाई देगा.
<Copy source='response'> <StatusCode>404</StatusCode> </Copy>
डिफ़ॉल्ट: |
गलत |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse><Copy>/<ReasonPhrase> एलिमेंट
गड़बड़ी के सोर्स एट्रिब्यूट के ज़रिए बताए गए ऑब्जेक्ट से कॉपी करने की वजह दिखाई देगा.
<Copy source='response'> <ReasonPhrase>The resource requested was not found.</ReasonPhrase> </Copy>
डिफ़ॉल्ट: |
गलत |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse><Remove>/<Headers> एलिमेंट
गड़बड़ी के मैसेज से बताए गए एचटीटीपी हेडर हटाता है. सभी हेडर हटाने के लिए,
<Remove><Headers/></Remove>
. इस उदाहरण में,
user-agent
हेडर को भी शामिल किया गया है.
<Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove>
अगर एक ही नाम वाले कई हेडर हैं, तो नीचे दिया गया सिंटैक्स इस्तेमाल करें:
<Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove>
यह उदाहरण "h1", "h2", और "h3" की दूसरी वैल्यू को हटा देता है. अगर "h3" है में केवल एक है मान है, तो इसे निकाला नहीं जाता है.
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse><Set> एलिमेंट
गड़बड़ी के मैसेज में जानकारी सेट करता है.
<Set> <Headers/> <Payload> </Payload> <StatusCode/> <ReasonPhrase/> </Set>
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
लागू नहीं |
<FaultResponse>/<Set>/<Headers> एलिमेंट
गड़बड़ी के मैसेज में एचटीटीपी हेडर सेट या ओवरराइट करता है. ध्यान दें कि खाली हेडर
<Set><Headers/></Set>
कोई हेडर सेट नहीं करता. यह उदाहरण सेट करता है
user-agent
हेडर को मैसेज वैरिएबल के साथ
<AssignTo>
एलिमेंट.
<Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set>
डिफ़ॉल्ट: |
लागू नहीं |
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
<FaultResponse>/<Set>/<Payload> एलिमेंट
गड़बड़ी के मैसेज का पेलोड सेट करता है.
<Set> <Payload contentType="text/plain">test1234</Payload> </Set>
JSON पेलोड सेट करें:
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set>
JSON पेलोड में, variablePrefix
और
डेलिमिटर वर्णों वाले variableSuffix
एट्रिब्यूट, जैसा कि यहां दिखाया गया है
उदाहरण के लिए.
<Set> <Payload contentType="application/json" variablePrefix="@" variableSuffix="#"> {"name":"foo", "type":"@variable_name#"} </Payload> </Set>
या क्लाउड रिलीज़ 16.08.17 के बाद से, वैरिएबल डालने के लिए कर्ली ब्रैकेट भी इस्तेमाल किए जा सकते हैं:
<Set> <Payload contentType="application/json"> {"name":"foo", "type":"{variable_name}"} </Payload> </Set>
एक्सएमएल में मिक्स पेलोड सेट करें:
<Set> <Payload contentType="text/xml"> <root> <e1>sunday</e1> <e2>funday</e2> <e3>{var1}</e3> </Payload> </Set>
डिफ़ॉल्ट: |
|
मौजूदगी: |
वैकल्पिक |
टाइप: |
स्ट्रिंग |
विशेषताएं
<Payload contentType="content_type" variablePrefix="char" variableSuffix="char">
एट्रिब्यूट | ब्यौरा | मौजूदगी | टाइप |
---|---|---|---|
contentType |
अगर contentType बताया गया है, तो उसका मान |
वैकल्पिक | स्ट्रिंग |
variablePrefix | विकल्प के तौर पर, यह किसी फ़्लो वैरिएबल पर लीडिंग डीलिमिटर के बारे में बताता है क्योंकि JSON पेलोड डिफ़ॉल्ट "{" का इस्तेमाल नहीं कर सकते वर्ण. | वैकल्पिक | चार |
variableSuffix | वैकल्पिक रूप से, फ़्लो पर ट्रेलिंग डीलिमिटर की जानकारी देता है वैरिएबल क्योंकि JSON पेलोड डिफ़ॉल्ट "} का इस्तेमाल नहीं कर सकते वर्ण. | वैकल्पिक | चार |
<FaultResponse>/<Set>/<StatusCode> एलिमेंट
यह जवाब का स्टेटस कोड सेट करता है.
<Set source='request'> <StatusCode>404</StatusCode> </Set>
डिफ़ॉल्ट: |
गलत |
मौजूदगी: |
वैकल्पिक |
टाइप: |
बूलियन |
<FaultResponse>/<Set>/<ReasonPhrase> एलिमेंट
जवाब की वजह बताने वाला वाक्यांश सेट करता है.
<Set source='request'> <ReasonPhrase>The resource requested was not found.</ReasonPhrase> </Set>
डिफ़ॉल्ट: |
गलत |
मौजूदगी: |
वैकल्पिक |
टाइप: |
बूलियन |
<ShortFaultReason> एलिमेंट
जवाब में एक छोटी सी गड़बड़ी की वजह भी बताई जाती है:
<ShortFaultReason>true|false</ShortFaultReason>
डिफ़ॉल्ट रूप से, नीति के रिस्पॉन्स में गड़बड़ी की वजह यह है:
"fault":{"faultstring":"Raising fault. Fault name : Raise-Fault-1","detail":{"errorcode":"errorCode"}}}
मैसेज को पढ़ने लायक बनाने के लिए, <ShortFaultReason>
एलिमेंट को सेट करें
'सही' के तौर पर faultstring
को छोटा करके सिर्फ़ नीति का नाम लिखें:
"fault":{"faultstring":"Raise-Fault-1","detail":{"errorcode":"errorCode"}}}
मान्य वैल्यू: सही/गलत(डिफ़ॉल्ट).
डिफ़ॉल्ट: |
गलत |
मौजूदगी: |
वैकल्पिक |
टाइप: |
बूलियन |
फ़्लो वैरिएबल
फ़्लो वैरिएबल, एचटीटीपी के आधार पर रनटाइम के दौरान नीतियों और फ़्लो के डाइनैमिक व्यवहार को चालू करते हैं हेडर, मैसेज कॉन्टेंट या फ़्लो कॉन्टेक्स्ट. पहले से तय फ़्लो वैरिएबल उपलब्ध हैं RaiseFault नीति लागू होने के बाद. फ़्लो वैरिएबल के बारे में ज़्यादा जानकारी के लिए, वैरिएबल रेफ़रंस देखें.
वैरिएबल | टाइप | अनुमति | ब्यौरा |
---|---|---|---|
fault.name | स्ट्रिंग | रीड-ओनली | riseFault नीति के लागू होने पर, यह वैरिएबल हमेशा स्ट्रिंग पर सेट होता है
RaiseFault . |
fault.type | स्ट्रिंग | रीड-ओनली | गड़बड़ी में गड़बड़ी का टाइप लौटाता है और उपलब्ध न होने पर, एक खाली स्ट्रिंग देता है. |
fault.category | स्ट्रिंग | रीड-ओनली | गड़बड़ी में गड़बड़ी की कैटगरी दिखाता है और उपलब्ध न होने पर, एक खाली स्ट्रिंग देता है. |
riseFault के इस्तेमाल का उदाहरण
नीचे दिए गए उदाहरण में, किसी शर्त का इस्तेमाल
इनबाउंड अनुरोध पर, zipcode
नाम के साथ queryparam
. अगर आपने
अगर queryparam
मौजूद नहीं है, तो फ़्लो RaiseFault के ज़रिए गड़बड़ी बढ़ाएगा:
<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>अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है नीचे दिए गए उदाहरण से पता चलता है कि RaiseFault में क्या हो सकता है:
<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>
गड़बड़ी का रेफ़रंस
इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के साथ-साथ गड़बड़ी के वैरिएबल के बारे में बताया गया है ये सेटिंग, Edge की मदद से सेट की जाती हैं. ऐसा तब होता है, जब इस नीति की वजह से कोई गड़बड़ी होती है. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. इस बारे में ज़्यादा जानने के लिए, यह देखें नीति से जुड़ी गड़बड़ियों के बारे में आपको क्या पता होना चाहिए और गड़बड़ियां ठीक करना.
रनटाइम की गड़बड़ियां
नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.
गड़बड़ी कोड | एचटीटीपी कोड स्थिति | वजह |
---|---|---|
steps.raisefault.RaiseFault |
500 | गड़बड़ी वाली स्ट्रिंग देखें. |
डिप्लॉयमेंट से जुड़ी गड़बड़ियां
कोई नहीं.
गड़बड़ी के वैरिएबल
रनटाइम की गड़बड़ी होने पर ये वैरिएबल सेट किए जाते हैं. ज़्यादा जानकारी के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों के बारे में जानकारी.
वैरिएबल | कहां | उदाहरण |
---|---|---|
fault.name="fault_name" |
fault_name गड़बड़ी का नाम है, जैसा कि रनटाइम की गड़बड़ियों की टेबल ऊपर दी गई है. गड़बड़ी का नाम आखिरी है का हिस्सा है. | fault.name = "RaiseFault" |
raisefault.policy_name.failed |
policy_name, उस नीति का नाम है जिसे उपयोगकर्ता ने तय किया है गलती हुई. | raisefault.RF-ThrowError.failed = true |
गड़बड़ी के रिस्पॉन्स का उदाहरण
{ "fault":{ "detail":{ "errorcode":"steps.raisefault.RaiseFault" }, "faultstring":"Raising fault. Fault name: [name]" } }
स्कीमा
हर तरह की नीति को एक्सएमएल स्कीमा (.xsd
) से तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा
GitHub पर उपलब्ध हैं.
मिलते-जुलते विषय
गड़बड़ियां ठीक करना देखें