असाइन मैसेज की नीति

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

क्या

AssignMessage नीति, एपीआई प्रॉक्सी फ़्लो के दौरान नए अनुरोध और जवाब वाले मैसेज बनाती है या उनमें बदलाव करती है. इस नीति के तहत, आपको इन मैसेज पर ये कार्रवाइयां करने की अनुमति मिलती है:

  • किसी मैसेज में नए फ़ॉर्म पैरामीटर, हेडर या क्वेरी पैरामीटर जोड़ना
  • एक मैसेज से दूसरी मैसेज में मौजूदा प्रॉपर्टी कॉपी करना
  • किसी मैसेज से हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर, और/या मैसेज के पेलोड हटाएं
  • किसी मैसेज में मौजूद प्रॉपर्टी की वैल्यू सेट करना

AssignMessage नीति की मदद से, आम तौर पर अनुरोध या जवाब की प्रॉपर्टी जोड़ी, बदली या हटाई जाती हैं. हालांकि, AssignMessage नीति का इस्तेमाल करके, कस्टम अनुरोध या जवाब का मैसेज बनाया जा सकता है. साथ ही, इसे किसी दूसरे टारगेट को भेजा जा सकता है. इसके बारे में कस्टम अनुरोध के मैसेज बनाना लेख में बताया गया है.

AssignMessage नीति, मैसेज या फ़्लो वैरिएबल बना सकती है या उनमें बदलाव कर सकती है. इस नीति का इस्तेमाल, अनुरोध के मैसेज में बदलाव करने के लिए किया जाता है. इसके बाद, इन मैसेज को प्रॉक्सी के ज़रिए अपस्ट्रीम सिस्टम को भेजा जाता है. इसके अलावा, इस नीति का इस्तेमाल, जवाब के मैसेज में बदलाव करने के लिए भी किया जाता है. इसके बाद, इन मैसेज को एपीआई का इस्तेमाल करने वाले ऐप्लिकेशन को भेजा जाता है.

<AssignMessage> एलिमेंट

AssignMessage नीति के बारे में बताता है.

डिफ़ॉल्ट वैल्यू नीचे दिया गया डिफ़ॉल्ट नीति टैब देखें
ज़रूरी है? ज़रूरी है
समस्या कॉम्प्लेक्स ऑब्जेक्ट
पैरंट एलिमेंट लागू नहीं
चाइल्ड एलिमेंट <Add>
<AssignTo>
<AssignVariable>
<Copy>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

<AssignMessage> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  !-- All AssignMessage >chi<ld >eleme<nts are op>tional <--
  Add
    FormParams
      F>ormParam name=&<quot;formp>aram_name"<formparam_v>alue/<FormPar>am
    <  ...
    /FormParams
   > Headers
   <   Head>er name="h<eader_na>me&qu<ot;header_v>alue/He<ader
      ...
    /Headers
    Q>ueryParams
     < QueryParam> name="que<ryparam_name>&qu<ot;q>uery<param_value/QueryParam
      ...
    /QueryParams
  /Add

  AssignTo createNew=&>quot;[true|false]" t<ransport=>&quo<t;http"
 >   ty<pe=&>quot;[request<|resp>onse]<&qu>ot;destination_<vari>able_<name/Ass>ignTo

  AssignV<ariable
 >   Namevaria<ble_name/Name
    Refsource_vari><able/Ref
>    T<empla>temessage_temp<late/T>emp<late
    or
   > Tem<plate ref='template_variable>'</Template
    Valuevariable_valu<e/Value
  />AssignVari<able

  Co>py sour<ce="[request|response]&quo>t;
    !-- Can <also be an> empty array (F<ormParams/)> --&g<t;
    FormParams
      FormPara<m name=&>quot;formp<aram_na>me"<;formparam_value/FormPara>m
      ...
<    /Fo>rmParams
    !-<- Can al>so be< an >empty array <(Head>ers/)< -->>
    Headers<
      H>eader< name="header_name"hea<der_value/He>ader
     < ...
    /H>eaders
<    Path[false|true]/Path
    Pay>load[false|true]</Payload
  >  !-- Can also <be an empty >array< (QueryParam>s/) -->
 <   QueryParam>s
   <   QueryPa>ram name=&qu<ot;querypar>am_na<me&q>uot;querypar<am_va>lue/Q<ueryPar>am
      ...<
    /Qu>ery<Param>s
  <  ReasonPhr>ase[false|true]/Rea<sonPhrase
  >  St<atusCode[false|true]/Stat>usCode
    Verb<[false|true]/Verb
    Vers>ion[<false|>true]</Version
  /Copy

  DisplayNamep<olicy_displ>ay_name/Di<splayName<>/span>

  Igno<reUnresolvedVariables[true|fals>e]
  /IgnoreUnr<esolvedVar>iables

  Remov<e
    !-- C>an al<so be an empty array (FormParams</) -->>;
    Form<Params<>/span>
      F<ormParam name="formp>aram_name&qu<ot;form>param_value/For<mParam
 >     <...
   > /FormParams<
    !--> Can <also be an empty array (Headers/<) -->
   > Headers
 <     Header> name=&<quot;header_name&quot;header_valu>e/Header
      .<..
    /Hea>ders
    Payloa<d[false|true>]/P<ayload<>/span>
    <!--> Can <also be an> empty <array (QueryParams/) -->
   > QueryParams
  <    QueryP>aram name="<;queryparam>_name<"q>uerypar<am_value/QueryParam
     > ...
    /Qu<eryPara>ms
  /Remove

 < Set
   > Form<Para>ms
 <     >FormP<aram name="formparam_name&quot;formparam_value/FormParam
      ...
    /FormParams
  >  Headers
 <     Hea>der n<ame="h>eader_n<ame"header_value/Header
    >  ...
    /Heade<rs
    Path>path/Path
    P<ayload conte>ntTyp<e="cont>ent_type" variablePrefix=<"prefix&>quot;<
        v>ariableSuffix=&quot;suffix&quo<t;new_paylo>ad/Pa<yloa>d
    QueryParams
      QueryParam nam<e=&qu>ot;qu<erypara>m_name"querypar<am_va>lue</Que>ry<Param
      ..>.
    /QueryParams
    ReasonPhrasereason_for_error or {variable}/ReasonPhrase
    StatusCodeHTTP_status_code or {variable}/StatusCode
    Verb[GET|POST|PUT|PATCH|DELETE|{variable}]/Verb
    Version[1.0|1.1|{variable}]/Verb
  /Set

/AssignMessage

डिफ़ॉल्ट नीति

यहां दिए गए उदाहरण में, Edge के यूज़र इंटरफ़ेस (यूआई) में अपने फ़्लो में AssignMessage नीति जोड़ने पर, डिफ़ॉल्ट सेटिंग दिखाई गई हैं:

<AssignMessage continueOnError="false" enabled="true" name=&quo>t;a<ssign-messa>ge-default"<
  DisplayNa>meA<ssign Messa>ge-<1/DisplayName
  Prope>rties</
  Copy> sour<ce="req>uest&<quot;
    H>eader<s/
    Q>ueryP<arams>/
   < FormParams>/
   < Payload/
   > Verb</
   > St<atusC>ode</
    >Reaso<nPhrase>/
    P<ath/
  /Copy
  Re>move
<    Head>ers
 <     Header> name=&<quot;h1"/
    /H>eader<s
    QueryP>arams<
      Que>ryParam< name="q1">/
   < /QueryPara>ms
  <  FormPa>ram<s
     > Fo<rmP>aram <name=&qu>ot;f1<"/
    >/Form<Params
    >Pay<load>/
 < /R>emove<
  Add
 >   He<aders/
    Q>ueryP<arams/
    >FormP<aram<s/
 > /A<dd
  >Set>
    <Heade>rs/<
   > Qu<eryParams/
   > Form<Para>ms/
<    !>-- Ve<rbGET/>Verb <--
 >   <Path/
  /Set
  >Ass<ignVariable
    Namename/>Name
  <  Value/
    Ref/
  /Assig>nVa<riable
  IgnoreUnresolvedVariablestrue
  /IgnoreUnresolvedV>a<riables
  Assi>gnTo createNew="false" transport="http" type="request"/
/AssignMessage

Edge के यूज़र इंटरफ़ेस (यूआई) में नई AssignMessage नीति डालने पर, टेंप्लेट में सभी संभावित कार्रवाइयों के लिए स्टब शामिल होते हैं. आम तौर पर, आपको यह चुनना होता है कि इस नीति के साथ कौनसी कार्रवाइयां करनी हैं. साथ ही, आपको बाकी चाइल्ड एलिमेंट हटाने होते हैं. उदाहरण के लिए, अगर आपको कॉपी करने की कार्रवाई करनी है, तो <Copy> एलिमेंट का इस्तेमाल करें. साथ ही, नीति को ज़्यादा आसानी से पढ़ने लायक बनाने के लिए, <Add>, <Remove>, और अन्य चाइल्ड एलिमेंट हटाएं.

इस एलिमेंट में ये एट्रिब्यूट शामिल होते हैं, जो सभी नीतियों में शामिल हैं:

एट्रिब्यूट डिफ़ॉल्ट ज़रूरी है? ब्यौरा
name लागू नहीं ज़रूरी

नीति का अंदरूनी नाम. name एट्रिब्यूट की वैल्यू में अक्षर, संख्याएं, स्पेस, हाइफ़न, अंडरस्कोर, और फ़ुल स्टॉप का इस्तेमाल किया जा सकता है. इस वैल्यू में 255 से ज़्यादा वर्ण नहीं हो सकते.

इसके अलावा, मैनेजमेंट एलिमेंट के यूज़र इंटरफ़ेस (यूआई) प्रॉक्सी एडिटर में, नीति एलिमेंट को किसी अलग नाम से इस्तेमाल करने के लिए, <DisplayName> एलिमेंट का इस्तेमाल किया जा सकता है.

continueOnError गलत ज़रूरी नहीं नीति के काम न करने पर गड़बड़ी दिखाने के लिए, "गलत" पर सेट करें. ज़्यादातर नीतियों के लिए इस तरीके का इस्तेमाल किया जाना चाहिए. नीति लागू न होने के बाद भी फ़्लो चलाने के लिए, "सही" पर सेट करें.
enabled सही ज़रूरी नहीं नीति लागू करने के लिए, "सही" पर सेट करें. नीति को "बंद" करने के लिए "गलत" पर सेट करें. अगर नीति किसी फ़्लो से जुड़ी हुई हो, तो भी उसे लागू नहीं किया जाएगा.
async   गलत बहिष्कृत इस एट्रिब्यूट के इस्तेमाल पर रोक लगा दी गई है.

यहां दी गई टेबल में, <AssignMessage> के चाइल्ड एलिमेंट के बारे में खास जानकारी दी गई है:

चाइल्ड एलिमेंट ज़रूरी है? ब्यौरा
सामान्य कार्रवाइयां
<Add> वैकल्पिक यह को मैसेज ऑब्जेक्ट में जानकारी जोड़ता है. यह ऑब्जेक्ट, <AssignTo> एलिमेंट से तय होता है.

<Add> मैसेज में ऐसे हेडर या पैरामीटर जोड़ता है जो मूल मैसेज में मौजूद नहीं हैं. मौजूदा हेडर या पैरामीटर को बदलने के लिए, <Set> एलिमेंट का इस्तेमाल करें.

<Copy> वैकल्पिक यह source एट्रिब्यूट से तय किए गए मैसेज से, <AssignTo> एलिमेंट से तय किए गए मैसेज ऑब्जेक्ट तक जानकारी कॉपी करता है.
<Remove> वैकल्पिक यह फ़ंक्शन, <AssignTo> एलिमेंट में दिए गए मैसेज वैरिएबल से, तय किए गए एलिमेंट मिटाता है.
<Set> वैकल्पिक यह अनुरोध या जवाब में मौजूद प्रॉपर्टी की वैल्यू बदलता है. यह वैल्यू, <AssignTo> एलिमेंट से तय की जाती है.

<Set> ओरिजनल मैसेज में पहले से मौजूद हेडर या पैरामीटर को बदल देता है. नए हेडर या पैरामीटर जोड़ने के लिए, <Add> एलिमेंट का इस्तेमाल करें.

अन्य चाइल्ड एलिमेंट
<AssignTo> वैकल्पिक यह तय करता है कि AssignMessage नीति किस मैसेज पर लागू होगी. यह स्टैंडर्ड अनुरोध या जवाब हो सकता है. इसके अलावा, यह कोई नया, कस्टम मैसेज भी हो सकता है.
<AssignVariable> वैकल्पिक यह फ़्लो वैरिएबल को वैल्यू असाइन करता है. अगर वैरिएबल मौजूद नहीं है, तो <AssignVariable> उसे बनाता है.
<IgnoreUnresolvedVariables> वैकल्पिक यह कुकी तय करती है कि जब किसी ऐसे वैरिएबल का सामना होता है जिसे हल नहीं किया जा सकता, तो प्रोसेसिंग बंद हो जाएगी या नहीं.

इनमें से हर चाइल्ड एलिमेंट के बारे में, यहां दिए गए सेक्शन में बताया गया है.

उदाहरण

यहां कुछ उदाहरण दिए गए हैं, जिनसे पता चलता है कि AssignMessage नीति का इस्तेमाल कैसे किया जा सकता है:

1: हेडर जोड़ें

इस उदाहरण में, <Add> एलिमेंट का इस्तेमाल करके, अनुरोध में हेडर जोड़ा गया है:

<AssignMessage name="AM-add-heade>rs-<1&q>uot;
<  Add
 >   Head<ers
      Header name=&q>uot;partner-id"{verifyapikey.VAK-1.devel<oper.ap>p.par<tner-id}>/He<ader>
  <  /Heade>rs
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

2: पेलोड हटाना

यहां दिए गए उदाहरण में, <Remove> एलिमेंट की मदद से, रिस्पॉन्स से पेलोड को मिटाया गया है:

<AssignMessage name="AM-remo>ve-<1"
  D>isplayNa<meremove-1/D>isp<layNam>e
  R<emove
 >   P<ayloadtr>ue/<Payload>
  </Remove
>  Assign<Torespons>e</AssignTo
/Ass>ignMessage

3: जवाब में बदलाव करना

इस उदाहरण में, मौजूदा रिस्पॉन्स ऑब्जेक्ट में हेडर जोड़कर उसे बदला गया है:

<AssignMessage name="AM-modify-resp>ons<e&q>uot;
<  Set
 >   Head<ers
      Header name=&>quot;Cache-Hit"{lookupcache.Loo<kupCach>e-1.c<achehit}>/He<ader>
  <  /Headers
  /Set
  Ignor>eUnresol<vedVariablesfalse
  /Ignor>eUn<resolved>Variable<s
  Assig>n<Toresponse/Ass>ignTo
/AssignMessage

इस उदाहरण से नया मैसेज नहीं बनता. इसके बजाय, यह एचटीटीपी हेडर जोड़कर, मौजूदा रिस्पॉन्स मैसेज में बदलाव करता है.

इस उदाहरण में, <AssignTo> एलिमेंट में वैरिएबल का नाम response के तौर पर तय किया गया है. इसलिए, यह नीति उस रिस्पॉन्स ऑब्जेक्ट में बदलाव करती है जिसे टारगेट सर्वर से मिले डेटा के साथ सेट किया गया था.

इस नीति के तहत, रिस्पॉन्स मैसेज में जोड़ा गया एचटीटीपी हेडर, LookupCache नीति से मिले वैरिएबल से लिया गया है. इसलिए, Assign Message नीति से बदले गए जवाब के मैसेज में एक एचटीटीपी हेडर होता है. इससे पता चलता है कि नतीजे, कैश मेमोरी से लिए गए हैं या नहीं. रिस्पॉन्स में हेडर सेट करने से, डीबग करने और समस्याओं को हल करने में मदद मिल सकती है.

4: डाइनैमिक कॉन्टेंट सेट करना

Assign Message का इस्तेमाल, रिस्पॉन्स और अनुरोध के मैसेज के पेलोड में डाइनैमिक कॉन्टेंट एम्बेड करने के लिए किया जा सकता है.

किसी एक्सएमएल पेलोड में Edge फ़्लो वैरिएबल एम्बेड करने के लिए, वैरिएबल को कर्ली ब्रैकेट में डालें. जैसे: {prefix.name}.

यहां दिए गए उदाहरण में, user-agent एचटीटीपी हेडर फ़्लो वैरिएबल की वैल्यू को User-agent नाम के एक्सएमएल एलिमेंट में एम्बेड किया गया है:

<AssignMessage name="AM-set-dynamic-con>ten<t"<>/span>
  Assign<Torespons>e/A<ssi>gnTo
<  Set
    Payload contentType=>"t<ext/xml&qu>ot;
      User-agent{reques<t.header.us>er-ag<ent}/Use>r-a<gent>
  <  /Payload
  /Set
  Ignor>eUnresol<vedVariablesfalse
  /Ignor>e<UnresolvedVari>ables
/AssignMessage

JSON पेलोड के लिए, variablePrefix और variableSuffix एट्रिब्यूट का इस्तेमाल करके वैरिएबल डाले जा सकते हैं. साथ ही, सीमांकक वर्णों का इस्तेमाल किया जा सकता है. उदाहरण के लिए, यहां दिया गया तरीका अपनाएं:

<AssignMessage name="set-pay>loa<d"
  Payload contentType="application/json" variablePrefix=&q>uot;@" variableSuffix="#"
  {
     "user<-agent&q>u<ot;: "@re>quest.header.user-agent#"
  }
  /Payload
/AssignMessage

फ़्लो वैरिएबल की पूरी सूची देखने के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.

क्लाउड रिलीज़ 16.08.17 के बाद से, वैरिएबल डालने के लिए कर्ली ब्रेसिज़ का भी इस्तेमाल किया जा सकता है.

5: क्वेरी पैरामीटर हटाएं

यहां दिए गए उदाहरण में, अनुरोध से apikey क्वेरी पैरामीटर को हटाया गया है:

<AssignMessage name="AM-remove-query-p>ara<m">;
  R<emove
    Q>ueryPar<ams
      QueryParam name>=&quo<t;apikey&quo>t;/<
    /Q>uer<yParams
>  /Remo<ve
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उपयोगकर्ता की पुष्टि करने के लिए, VerifyAPIKey नीति का इस्तेमाल करते समय, अनुरोध के मैसेज से apikey क्वेरी पैरामीटर हटाना सबसे सही तरीका है. ऐसा इसलिए किया जाता है, ताकि संवेदनशील जानकारी को बैकएंड टारगेट तक पहुंचने से रोका जा सके.

6: वैरिएबल सेट/पाना

इस उदाहरण में, Assign Message की तीन नीतियों का इस्तेमाल किया गया है:

  1. यह अनुरोध में तीन फ़्लो वैरिएबल बनाता है. इनकी वैल्यू स्टैटिक होती हैं
  2. यह अनुरोध फ़्लो में दूसरी नीति में फ़्लो वैरिएबल को डाइनैमिक तरीके से पाता है
  3. यह कुकी, उन्हें जवाब के पेलोड में सेट करती है
<!-- Policy #1: Set variables in the request -->

<AssignMessage name="AM-set-varia>bles&<quot;
    !-- Create a variable named myAp>pSecr<et --
    Assi>gnVariabl<e
  >      Namem<yAppS>ecret/Nam<e
   >  <   Val>ue42/<Value
    /Assi>gnVar<iable
    !-- Create a variable named config.envi>ronme<nt --
    Assi>gnVariabl<e
  >      Nameconfig.e<nviro>nment/Nam<e
   >    < Value>test/<Value
    /Assi>gnVar<iable
    !-- Create a variable named config.p>rotoc<ol --
    Assi>gnVariabl<e
  >      Nameconfi<g.pro>tocol/Nam<e
   >     V<aluego>pher/<Value
    /Assi>g<nVariable
/Ass>ignMessage

पहली नीति में, <AssignVariable> एलिमेंट, अनुरोध में तीन वैरिएबल बनाता है और उन्हें सेट करता है. हर <Name> एलिमेंट, वैरिएबल का नाम तय करता है. वहीं, <Value> वैल्यू तय करता है.

दूसरी नीति, वैल्यू को पढ़ने के लिए <AssignVariable> एलिमेंट का इस्तेमाल करती है. साथ ही, तीन नए वैरिएबल बनाती है:

<!-- Policy #2: Get variables from the request -->
<AssignMessage continueOnError="false" enabled="true" >nam<e="get-variables"
  AssignTo createNew="fals>e&q<uot; transport="http" type="request"/
  !-- Get t>he <value of myApp>Secre<t an>d crea<te a >new v<ari>able, secre<t -->
  As<signV>a<riable>
  <  Namesecret/Na>me
<    RefmyAppSecret/Ref
    Value0/Value
  /AssignVariable
  !-- Get the value of >con<fig.environmen>t and< cre>ate a new v<ariab>le, e<nvi>ronment --
  Assig<nVar>iable<
    >Nameenv<ironme>nt/<Name
    Refcon>fig<.environment/Ref
    Valuedefault/Value
  /AssignVariable
  !-- Get the val>ue <of config.prot>ocol <and >create a< new >varia<ble>, protocol --
 < Ass>ignVa<riabl>e
    N<amepro>toc<ol/Name
    Ref>con<fig.protocol/Ref
    Valu>edef<ault/Value
  /AssignVariab>l<e
  IgnoreUnre>solvedVariablestrue/IgnoreUnresolvedVariables
/AssignMessage

दूसरी नीति में, <Ref> एलिमेंट, सोर्स वैरिएबल का रेफ़रंस देता है. साथ ही, <Name> एलिमेंट, नए वैरिएबल के नाम तय करते हैं. अगर <Ref> एलिमेंट से रेफ़र किया गया वैरिएबल ऐक्सेस नहीं किया जा सकता, तो <Value> एलिमेंट से तय की गई वैल्यू का इस्तेमाल किया जा सकता है.

नीतियों के इस सेट को आज़माने के लिए:

  1. अनुरोध फ़्लो में नीतियां #1 और #2 जोड़ें. पक्का करें कि आपने नीति #1 को नीति #2 से पहले रखा हो.
  2. जवाब के फ़्लो में तीसरी नीति जोड़ें.
  3. तीसरी नीति, जवाब में वैरिएबल जोड़ने के लिए <Set> एलिमेंट का इस्तेमाल करती है. यहां दिए गए उदाहरण में, रिस्पॉन्स में एक एक्सएमएल पेलोड बनाया गया है. यह पेलोड, Edge क्लाइंट को भेजता है:
    <!-- Policy #3: Add variables to the response -->
    <AssignMessage continueOnError="false" enabled="true" name=&qu>ot;<put-em-in-t>he-payload"
      Di<splayNameput>-em<-in>-the-<payload/DisplayName
      Set
        Payload> conten<tType=&>quot;appl<icatio>n/xml&qu<ot;
       >   wrappe<r
        >    secret{<secret}/sec>ret
            c<onfig
          >    environ<ment{env>ironment}/<environme>nt
          <    pro>tocol{p<rotocol}>/prot<ocol
       >   <  /c>onf<ig
          /wrapper
        /Pa>yload
     < /Set
      IgnoreUnresolvedVa>ria<blestrue
      /IgnoreUnresolvedVariables
      AssignTo createNew=&>q<uot;false">; transport="http" type="response"/
    /AssignMessage

    ध्यान दें कि <Set> में फ़्लो वैरिएबल को ऐक्सेस करने का सिंटैक्स, उन्हें कर्ली ब्रैकेट में रैप करना है.

    <Payload> एलिमेंट के contentType एट्रिब्यूट को "application/xml" पर सेट करना न भूलें.

  4. अपनी एपीआई प्रॉक्सी को अनुरोध भेजें. उदाहरण के लिए:
    curl -vL https://ahamilton-eval-test.apigee.net/myproxy

    इसके अलावा, नतीजों को xmllint जैसे किसी यूटिलिटी के ज़रिए पाइप किया जा सकता है, ताकि एक्सएमएल को अच्छी तरह से फ़ॉर्मैट किए गए स्ट्रक्चर में दिखाया जा सके:

    curl -vL https://ahamilton-eval-test.apigee.net/myproxy | xmllint --format -

    जवाब का मुख्य हिस्सा ऐसा दिखना चाहिए:

    <wrapper>
      <secret>42</secret>
      <config>
        <environment>test</environment>
        <protocol>gopher</protocol>
      </config>
    </wrapper>

7: सेवा कॉलआउट के रिस्पॉन्स हेडर पाना

इस उदाहरण में, मान लें कि एपीआई प्रॉक्सी अनुरोध में ServiceCallout नीति है. साथ ही, कॉलआउट रिस्पॉन्स में एक ही नाम वाले कई हेडर (Set-Cookie) शामिल हैं. मान लें कि Service Callout के रिस्पॉन्स वैरिएबल की डिफ़ॉल्ट वैल्यू calloutResponse है. ऐसे में, यह नीति दूसरे Set-Cookie हेडर की वैल्यू को हासिल करती है.

<AssignMessage name="AM-Payload-from-SC-he>ade<r&q>uot;
<  Set
    Payload contentType="ap>plication/json"
      {"Cookies from Service Callout":" {calloutR<esponse.>hea<der.>Set<-Cookie.2}"}
    /Pa>yload
 < /Set
  IgnoreUnresolvedVa>ria<blestrue>
  /Igno<reUnresol>v<edVariables
  >AssignToresponse/AssignTo
/AssignMessage

सभी हेडर वैल्यू की सूची बनाने के लिए, इस वैरिएबल का इस्तेमाल करें:

{calloutResponse.header.Set-Cookie.values}

इस रेफ़रंस में मौजूद हर चाइल्ड एलिमेंट के लिए, ज़्यादा उदाहरण दिए गए हैं. ज़्यादा उदाहरणों के लिए, GitHub पर AssignMessage का उदाहरण देखें.

चाइल्ड एलिमेंट का रेफ़रंस

इस सेक्शन में, <AssignMessage> के चाइल्ड एलिमेंट के बारे में बताया गया है.

<Add>

यह अनुरोध या जवाब में ऐसी जानकारी जोड़ता है जिसे <AssignTo> एलिमेंट से तय किया जाता है.

<Add> एलिमेंट, मैसेज में ऐसी नई प्रॉपर्टी जोड़ता है जो ओरिजनल मैसेज में मौजूद नहीं हैं. मौजूदा प्रॉपर्टी की वैल्यू बदलने के लिए, <Set> एलिमेंट का इस्तेमाल करें.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट <FormParams>
<Headers>
<QueryParams>

<Add> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs1

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>"<;policy_na>me"<; 
  Add
    FormParams
      F>ormParam name=&<quot;formp>aram_name"<formparam_v>alue/<FormPar>am
    <  ...
    /FormParams
   > Headers
   <   Head>er name="h<eader_na>me&qu<ot;header_v>alue/He<ader
      ...
    /Headers
    Q>ueryParams
     < QueryParam> name="que<ryparam_name>&qu<ot;q>u<eryparam_value>/QueryParam
      ...
    /QueryParams
  /Add
/AssignMessage

पहला उदाहरणs2

यहां दिए गए उदाहरण में, <FormParams> एलिमेंट का इस्तेमाल किया गया है. इससे शुरुआती अनुरोध से तीन क्वेरी स्ट्रिंग पैरामीटर की वैल्यू मिलती हैं. साथ ही, टारगेट एंडपॉइंट के अनुरोध पर उन्हें फ़ॉर्म पैरामीटर के तौर पर सेट किया जाता है:

<AssignMessage name="AM-add-formpara>ms-<3&q>uot;
<  Add
    >FormPar<ams
      FormParam name=>"username"{requ<est.queryp>aram.na<me}/FormParam
      FormP>aram name="zip_code&quo<t;{request>.queryp<aram.zipCode}/FormParam
      For>mParam name="default<_language&>quot;<{request.qu>ery<para>m.l<ang}/F>ormPa<ram
    /For>mPa<rams
  >/Ad<d
  Remo>ve
    <QueryPara>m<s/
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

दूसरा उदाहरणs3

इस उदाहरण में, <Headers> एलिमेंट का इस्तेमाल करके, टारगेट एंडपॉइंट को भेजे जाने वाले अनुरोध में partner-id हेडर जोड़ा गया है:

<AssignMessage name="AM-add-heade>rs-<1&q>uot;
<  Add
 >   Head<ers
      Header name=&q>uot;partner-id"{verifyapikey.VAK-1.devel<oper.ap>p.par<tner-id}>/He<ader>
  <  /Heade>rs
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 3s4

यहां दिए गए उदाहरण में, <QueryParams> एलिमेंट का इस्तेमाल किया गया है. इससे अनुरोध में, स्टैटिक वैल्यू वाला एक क्वेरी पैरामीटर जोड़ा जा सकता है:

<AssignMessage name="AM-add-querypara>ms-<1&q>uot;
<  Add
    Q>ueryPar<ams
      QueryParam name>=&<quot;myPara>m&quo<t;42/QueryPa>ram<
   > /Q<ueryPara>ms
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

इस उदाहरण में, अनुरोध के प्रीफ़्लो में <Add> का इस्तेमाल किया गया है. अगर ट्रेस टूल जैसे किसी टूल में नतीजों को देखा जाता है, तो https://example-target.com/get का अनुरोध https://example-target.com/get?myParam=42 बन जाता है.

<Add> के चाइल्ड एलिमेंट में डाइनैमिक स्ट्रिंग सब्स्टिट्यूशन की सुविधा काम करती है. इसे मैसेज टेंप्लेटिंग कहा जाता है.

<FormParams> (<Add> का बच्चा)

अनुरोध के मैसेज में नए फ़ॉर्म पैरामीटर जोड़ता है. इस एलिमेंट का जवाब वाले मैसेज पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <FormParam> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Add>
चाइल्ड एलिमेंट <FormParam>

<FormParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs5

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_na>me"<; 
  Add
    FormParams
      F>ormParam name=&<quot;formp>aram_name"<formparam_v>alu<e/FormParam
      ...
    /FormParams
  AssignTo createNew="[true|false]&qu>ot; transport="http&<quot;
   > ty<pe=&>q<uot;[request|r>esponse]"destination_variable_name/AssignTo
  /Add
/AssignMessage

उदाहरण 1s6

इस उदाहरण में, अनुरोध में एक फ़ॉर्म पैरामीटर ("answer") और एक स्टैटिक वैल्यू ("42") जोड़ी गई है:

<AssignMessage name="AM-add-formpara>ms-<1&q>uot;
<  Add
    >FormPar<ams
      FormParam nam>e=<"answ>er&qu<ot;42/FormP>ara<m
  >  /<FormPara>ms
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 2s7

यहां दिए गए उदाहरण में, name क्वेरी पैरामीटर की वैल्यू मिलती है. साथ ही, इसे फ़ॉर्म पैरामीटर के तौर पर अनुरोध में जोड़ा जाता है. इसके बाद, क्वेरी पैरामीटर को हटा दिया जाता है:

<AssignMessage name="AM-Swap-QueryParam-to-FormPa>ram<s&q>uot;
<  Add
    FormParam n>ame="name"{requ<est.queryp>ara<m.na>me}</FormP>aram
<  /Add
  Remove
    Que>ryP<aram na>m<e="name&q>uot;/
  /Remove
/AssignMessage

ध्यान दें कि इस उदाहरण में, <AssignTo> के साथ टारगेट तय नहीं किया गया है. यह नीति, अनुरोध में सिर्फ़ पैरामीटर जोड़ती है.

उदाहरण 3s8

यहां दिए गए उदाहरण में, अनुरोध में कई फ़ॉर्म पैरामीटर जोड़े गए हैं:

<AssignMessage name="AM-add-formpara>ms-<3&q>uot;
<  Add
    >FormPar<ams
      FormParam name=>"username"{requ<est.queryp>aram.na<me}/FormParam
      FormP>aram name="zip_code&quo<t;{request>.queryp<aram.zipCode}/FormParam
      For>mParam name="default<_language&>quot;<{request.qu>ery<para>m.l<ang}/F>ormPa<ram
    /For>mPa<rams
  >/Ad<d
  Remo>ve
    <QueryPara>m<s/
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

इस उदाहरण में, अनुरोध करने वाले व्यक्ति से मिले क्वेरी स्ट्रिंग पैरामीटर को फ़ॉर्म पैरामीटर के तौर पर जोड़ा गया है. हालांकि, इनके नाम अलग-अलग हैं. इसके बाद, यह ओरिजनल क्वेरी पैरामीटर हटा देता है. Apigee, बदले गए अनुरोध को टारगेट एंडपॉइंट पर भेजेगा.

फ़्लो देखने के लिए, ट्रेस टूल का इस्तेमाल किया जा सकता है. आपको दिखेगा कि अनुरोध के मुख्य हिस्से में, यूआरएल-कोड में बदला गया फ़ॉर्म डेटा शामिल है. इसे मूल रूप से क्वेरी स्ट्रिंग पैरामीटर के तौर पर पास किया गया था:

username=nick&zip_code=90210&default_language=en

<FormParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: POST
  • मैसेज का टाइप: अनुरोध
  • इनमें से कोई एक या दोनों:
    • फ़ॉर्म डेटा: इसे किसी वैल्यू पर सेट किया जाता है या "" (खाली स्ट्रिंग) पर सेट किया जाता है. उदाहरण के लिए, curl के साथ, अपने अनुरोध में -d "" जोड़ें.
    • Content-Length हेडर: इसे 0 पर सेट करें. ऐसा तब करें, जब ओरिजनल अनुरोध में कोई डेटा न हो. अगर ऐसा नहीं है, तो इसे मौजूदा लंबाई (बाइट में) पर सेट करें. उदाहरण के लिए, curl के साथ अपने अनुरोध में -H "Content-Length: 0" जोड़ें.

उदाहरण के लिए:

curl -vL -X POST -d "" -H "Content-Type: application/x-www-form-urlencoded"
  https://ahamilton-eval-test.apigee.net/am-test

<FormParams> जोड़ने पर, Edge अनुरोध के Content-Type हेडर को "application/x-www-form-urlencoded" पर सेट करता है. इसके बाद, मैसेज को टारगेट सेवा पर भेजता है.

<Headers> (<Add> का बच्चा)

यह फ़िल्टर, तय किए गए अनुरोध या जवाब में नए हेडर जोड़ता है. यह अनुरोध या जवाब, <AssignTo> एलिमेंट से तय किया जाता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <Header> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Add>
चाइल्ड एलिमेंट <Header>

<Headers> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs9

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy>_name&q<uot; 
  Add
    Headers
 >     Header <name=&q>uot;header_name<"he>ade<r_va>l<ue/Header
    >  ...
    /Headers
  /Add
/AssignMessage

पहला उदाहरणs10

इस उदाहरण में, अनुरोध के मैसेज में partner-id हेडर जोड़ा गया है. साथ ही, उस हेडर को verifyapikey.VAK-1.developer.app.partner-id फ़्लो वैरिएबल की वैल्यू असाइन की गई है.

<AssignMessage name="AM-add-heade>rs-<1&q>uot;
<  Add
 >   Head<ers
      Header name=&q>uot;partner-id"{verifyapikey.VAK-1.devel<oper.ap>p.par<tner-id}>/He<ader>
  <  /Heade>rs
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

<QueryParams> (<Add> का बच्चा)

यह अनुरोध में नए क्वेरी पैरामीटर जोड़ता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <QueryParam> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Add>
चाइल्ड एलिमेंट <QueryParam>

<QueryParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs11

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_nam>e"< 
  Add
    QueryParams
      Que>ryParam name=&qu<ot;querypar>am_name"qu<eryparam_val>ue/<Quer>y<Param
      ..>.
    /QueryParams
  /Add
/AssignMessage

उदाहरण 1s12

यहां दिए गए उदाहरण में, अनुरोध में "myParam" क्वेरी पैरामीटर जोड़ा गया है और इसे "42" वैल्यू असाइन की गई है:

<AssignMessage name="AM-add-querypara>ms-<1&q>uot;
<  Add
    Q>ueryPar<ams
      QueryParam name>=&<quot;myPara>m&quo<t;42/QueryPa>ram<
   > /Q<ueryPara>ms
  /A<dd
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

<QueryParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: GET
  • मैसेज का टाइप: अनुरोध

इसके अलावा, क्वेरी पैरामीटर सिर्फ़ तब सेट किए जा सकते हैं, जब <AssignTo> एलिमेंट का type एट्रिब्यूट, अनुरोध वाला मैसेज हो. जवाब में इन्हें सेट करने से कोई असर नहीं पड़ता.

अगर आपने अपनी नीति में क्वेरी पैरामीटर का खाली कलेक्शन (<Add><QueryParams/></Add>) तय किया है, तो नीति कोई क्वेरी पैरामीटर नहीं जोड़ेगी. इसका मतलब है कि <QueryParams> को शामिल नहीं किया गया है.

<AssignTo>

इस कुकी से यह तय होता है कि AssignMessage नीति किस ऑब्जेक्ट पर काम करती है. इसके विकल्प हैं:

  • अनुरोध का मैसेज: एपीआई प्रॉक्सी को मिला request
  • जवाब का मैसेज: टारगेट सर्वर से मिला response
  • कस्टम मैसेज: कस्टम अनुरोध या जवाब ऑब्जेक्ट

ध्यान दें कि कुछ मामलों में, उस ऑब्जेक्ट को नहीं बदला जा सकता जिस पर AssignMessage नीति लागू होती है. उदाहरण के लिए, जवाब में क्वेरी पैरामीटर (<QueryParams>) या फ़ॉर्म पैरामीटर (<FormParams>) जोड़ने या बदलने के लिए, <Add> या <Set> का इस्तेमाल नहीं किया जा सकता. अनुरोध पर, सिर्फ़ क्वेरी पैरामीटर और फ़ॉर्म पैरामीटर में बदलाव किया जा सकता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट कोई नहीं

अगर आपने <AssignTo> के बारे में नहीं बताया है या <AssignTo> एलिमेंट के बारे में बताया है, लेकिन एलिमेंट के लिए कोई टेक्स्ट वैल्यू नहीं दी है, तो नीति डिफ़ॉल्ट अनुरोध या जवाब पर लागू होगी. यह इस बात पर निर्भर करता है कि नीति कहां लागू होती है. अगर नीति, अनुरोध फ़्लो में लागू होती है, तो इसका असर अनुरोध के मैसेज पर पड़ता है. अगर यह जवाब देने की प्रोसेस में लागू होती है, तो नीति का असर जवाब पर डिफ़ॉल्ट रूप से पड़ता है.

<AssignTo> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs13

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  AssignTo createNew="[true|false]" transp>ort="http"
    <type=&quo>t<;[request|resp>onse]"destination_variable_name/AssignTo
/AssignMessage

उदाहरण 1s14

यहां दिए गए उदाहरण में बताया गया है कि टारगेट, ओरिजनल अनुरोध है. इसे टारगेट एंडपॉइंट पर भेजा जाएगा:

<AssignMessage name="assign>t<o-1"
!-- DO NOT >do <this --
  AssignTo createNew="false" transport=&q>u<ot;http" >type="request"/
/AssignMessage

दूसरा उदाहरणs15

नीचे दिए गए उदाहरण में, एक नया अनुरोध ऑब्जेक्ट बनाया गया है:

<AssignMessage name="AM-assign>to-2<" 
  AssignTo createNew="true" transport=&>quot;http" <type=&quo>t;<request"N>ameOfNewMessage/AssignTo 
/AssignMessage

नया अनुरोध या जवाब ऑब्जेक्ट बनाते समय, AssignMessage नीति के अन्य एलिमेंट (जैसे कि <Add>, <Set>, और <Copy>) उस नए अनुरोध ऑब्जेक्ट पर काम करते हैं.

बाद में फ़्लो में, अन्य नीतियों में नए अनुरोध ऑब्जेक्ट को ऐक्सेस किया जा सकता है. इसके अलावा, ServiceCallout नीति के साथ नए अनुरोध ऑब्जेक्ट को किसी बाहरी सेवा पर भेजा जा सकता है.

उदाहरण 3s16

यहां दिए गए उदाहरण में, "MyRequestObject" नाम का एक नया अनुरोध ऑब्जेक्ट बनाया गया है:

<AssignMessage name="assign>to-<2"
  AssignTo createNew="true" transport=&&quot;http" ty&pe="req>u<est"gt;My>RequestObjectlt;/AssignTo
/AssignMessage

नया अनुरोध या जवाब ऑब्जेक्ट बनाते समय, AssignMessage नीति के अन्य एलिमेंट (जैसे कि <Add>, <Set>, और <Copy>) उस नए अनुरोध ऑब्जेक्ट पर काम करते हैं.

बाद में फ़्लो में, अन्य नीतियों में नए अनुरोध ऑब्जेक्ट को ऐक्सेस किया जा सकता है. इसके अलावा, ServiceCallout नीति के साथ नए अनुरोध ऑब्जेक्ट को किसी बाहरी सेवा पर भेजा जा सकता है.

यहां दी गई टेबल में, <AssignTo> एट्रिब्यूट के बारे में बताया गया है:

एट्रिब्यूट ब्यौरा ज़रूरी है? टाइप
createNew

इससे यह तय होता है कि वैल्यू असाइन करते समय, यह नीति नया मैसेज बनाती है या नहीं.

अगर वैल्यू "true" है, तो नीति type में बताए गए टाइप का एक नया वैरिएबल बनाती है. यह टाइप "request" या "response" हो सकता है. अगर आपने नए वैरिएबल का नाम नहीं बताया है, तो नीति, type की वैल्यू के आधार पर नया अनुरोध या जवाब ऑब्जेक्ट बनाती है.

अगर "false" है, तो नीति इनमें से किसी एक तरीके से जवाब देती है:

  • अगर <AssignTo>, अनुरोध या जवाब के लिए वैरिएबल के नाम का इस्तेमाल कर सकता है, तो वह प्रोसेस जारी रखता है. उदाहरण के लिए, अगर नीति अनुरोध फ़्लो में है, तो वैरिएबल अनुरोध ऑब्जेक्ट होता है. अगर नीति किसी रिस्पॉन्स में है, तो वैरिएबल, रिस्पॉन्स ऑब्जेक्ट होता है.
  • अगर <AssignTo> को हल नहीं किया जा सकता या यह किसी ऐसे टाइप में बदल जाता है जो मैसेज टाइप नहीं है, तो नीति के तहत गड़बड़ी का मैसेज दिखता है.

अगर createNew को तय नहीं किया जाता है, तो नीति इनमें से किसी एक तरीके से जवाब देती है:

  • अगर <AssignTo> की टेक्स्ट वैल्यू से कोई मैसेज मिलता है, तो प्रोसेसिंग अगले चरण पर चली जाती है.
  • अगर <AssignTo> की टेक्स्ट वैल्यू को हल नहीं किया जा सकता या वह किसी मैसेज टाइप में नहीं बदलती है, तो type में बताए गए टाइप का एक नया वैरिएबल बनाया जाता है.
वैकल्पिक बूलियन
transport

अनुरोध या जवाब के मैसेज टाइप के लिए, ट्रांसपोर्ट का टाइप तय करता है.

डिफ़ॉल्ट वैल्यू "http" होती है. यह एकमात्र ऐसी वैल्यू है जिसका इस्तेमाल किया जा सकता है.

वैकल्पिक स्ट्रिंग
type createNew "true" होने पर, यह नए मैसेज का टाइप तय करता है. मान्य वैल्यू "request" या "response" हैं.

इस एट्रिब्यूट को शामिल न करने पर, Edge एक अनुरोध या जवाब बनाता है. यह इस बात पर निर्भर करता है कि यह नीति फ़्लो में कहां लागू होती है.

वैकल्पिक स्ट्रिंग

<AssignVariable>

यह फ़्लो वैरिएबल को वैल्यू असाइन करता है. अगर फ़्लो वैरिएबल मौजूद नहीं है, तो <AssignVariable> इसे बनाता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट <Name> (ज़रूरी है)
<Ref>
<Template>
<Value>

फ़्लो वैरिएबल को असाइन की गई वैल्यू इनमें से कोई एक हो सकती है:

  • लिटरल स्ट्रिंग: फ़्लो वैरिएबल के लिए लिटरल स्ट्रिंग वैल्यू तय करने के लिए, <Value> चाइल्ड एलिमेंट का इस्तेमाल करें.
  • फ़्लो वैरिएबल: डेस्टिनेशन फ़्लो वैरिएबल के लिए, मौजूदा फ़्लो वैरिएबल की वैल्यू तय करने के लिए, <Ref> चाइल्ड एलिमेंट का इस्तेमाल करें. सोर्स के तौर पर इस्तेमाल किए जा सकने वाले फ़्लो वैरिएबल की पूरी सूची देखने के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें.
  • मैसेज टेंप्लेट: <Template> चाइल्ड एलिमेंट का इस्तेमाल करके, इंटरपोलेट करने के लिए मैसेज टेंप्लेट तय करें. इससे डेस्टिनेशन फ़्लो वैरिएबल में रखने के लिए वैल्यू मिलती है.

<AssignVariable> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs17

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="polic>y_nam<e&qu>ot; 
  Assign<Varia>ble
 <   >Namevariable_na<me/N>ame
 <   Refso>urce_variable/Re<f
    Tem>platemessage<_template/Template
    or
    Te><mplate re>f=<9;tem>plate_variable<'/>Tem<plate
    Value>v<ariable_value/>Value
  /AssignVariable
/AssignMessage

सोर्स वैरिएबल तय करने के लिए, <Ref> एलिमेंट का इस्तेमाल करें. अगर <Ref> से रेफ़र किया गया वैरिएबल ऐक्सेस नहीं किया जा सकता, तो Edge, <Value> एलिमेंट से तय की गई वैल्यू का इस्तेमाल करता है. अगर आपने <Template> को तय किया है, तो इसे अन्य चाइल्ड एलिमेंट के मुकाबले प्राथमिकता दी जाएगी.

उदाहरण 1s18

यहां दिए गए उदाहरण में, नए वैरिएबल myvar की वैल्यू को लिटरल वैल्यू "42" पर सेट किया गया है:

<AssignMessage name="assignvariab>le-<1"
  Assi>gnVar<iabl>e
   < Name>myvar</Name>
 <   Val>ue4<2/Value
  /Assi>g<nVariable
/Ass>ignMessage

उदाहरण 2s19

यहां दिए गए उदाहरण में, फ़्लो वैरिएबल request.header.user-agent की वैल्यू को डेस्टिनेशन फ़्लो वैरिएबल myvar को असाइन किया गया है. साथ ही, क्वेरी पैरामीटर country की वैल्यू को डेस्टिनेशन फ़्लो वैरिएबल Country को असाइन किया गया है:

<AssignMessage name="assignvariab>le-<2"
  Assi>gnVar<iabl>e
   < Name>myvar</Na>me
    Refrequest.header.<user>-agen<t/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>gnV<ariable
  Assi>gnVar<iabl>e
    N<ameCo>untry</Na>me
    Refrequest.querypar<am.c>ountr<y/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>g<nVariable
/Ass>ignMessage

अगर दोनों में से कोई भी असाइनमेंट पूरा नहीं होता है, तो Edge, डेस्टिनेशन फ़्लो वैरिएबल को "ErrorOnCopy" वैल्यू असाइन करता है.

अगर myvar या Country फ़्लो वैरिएबल मौजूद नहीं हैं, तो <AssignVariable> उन्हें बनाता है.

उदाहरण 3s20

यहां दिए गए उदाहरण में, <Template> चाइल्ड एलिमेंट का इस्तेमाल किया गया है. इससे दो कॉन्टेक्स्ट वैरिएबल को एक लिटरल स्ट्रिंग (हाइफ़न) के साथ जोड़ा गया है:

<AssignMessage name='AV-via-templat>e-1<'
  IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables
  Assign>Varia<ble<>/span>
    Namemy_destination_<varia>ble/N<ame
 >   Value<BADDBE>EF/Va<lue
    >Template{system.uuid}-{me<ssageid}/>Tem<plate
  /Assign>V<ariable
/Assig>nMessage

<AssignVariable> का इस्तेमाल आम तौर पर, क्वेरी पैरामीटर, हेडर या अनुरोध के साथ पास की जा सकने वाली किसी अन्य वैल्यू के लिए डिफ़ॉल्ट वैल्यू सेट करने के लिए किया जाता है. इसके लिए, <Ref> और <Value> चाइल्ड एलिमेंट, दोनों का इस्तेमाल किया जाता है. ज़्यादा जानकारी के लिए, <Ref> के उदाहरण देखें.

<Name> (<AssignVariable> का बच्चा)

यह डेस्टिनेशन फ़्लो वैरिएबल का नाम तय करता है. उदाहरण के लिए, वह वैरिएबल जिसकी वैल्यू AssignMessage नीति से सेट की जाती है. अगर <AssignVariable> में दिया गया वैरिएबल मौजूद नहीं है, तो नीति उस नाम का वैरिएबल बनाती है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? ज़रूरी है
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignVariable>
चाइल्ड एलिमेंट कोई नहीं

<Name> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs21

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="polic>y_nam<e&qu>ot; 
  Assign<Varia>ble<
    Namevariab>l<e_name/Name
  >/AssignVariable
/AssignMessage

पहला उदाहरणs22

यहां दिए गए उदाहरण में, डेस्टिनेशन वैरिएबल को myvar के तौर पर दिखाया गया है. साथ ही, इसे "42" के लिटरल वैल्यू पर सेट किया गया है:

<AssignMessage name="assignvariab>le-<1"
  Assi>gnVar<iabl>e
   < Name>myvar</Name>
 <   Val>ue4<2/Value
  /Assi>g<nVariable
/Ass>ignMessage

अगर myvar मौजूद नहीं है, तो <AssignVariable> इसे बनाता है.

<Ref> (<AssignVariable> का बच्चा)

फ़्लो वैरिएबल के तौर पर असाइनमेंट के सोर्स के बारे में बताता है. फ़्लो वैरिएबल, पहले से तय किए गए फ़्लो वैरिएबल में से कोई एक हो सकता है. इनकी सूची फ़्लो वैरिएबल के रेफ़रंस में दी गई है. इसके अलावा, यह आपके बनाए गए कस्टम फ़्लो वैरिएबल में से कोई एक भी हो सकता है.

<Ref> की वैल्यू को हमेशा फ़्लो वैरिएबल के तौर पर देखा जाता है. वैल्यू के तौर पर, लिटरल स्ट्रिंग तय नहीं की जा सकती. लिटरल स्ट्रिंग वैल्यू असाइन करने के लिए, <Value> एलिमेंट का इस्तेमाल करें.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignVariable>
चाइल्ड एलिमेंट कोई नहीं

<Ref> के साथ फ़्लो वैरिएबल तय करते समय, फ़्लो वैरिएबल को रेफ़रंस करने के लिए आम तौर पर इस्तेमाल किए जाने वाले ब्रैकेट "{}" को शामिल न करें. उदाहरण के लिए, अपने नए वैरिएबल की वैल्यू को client.host फ़्लो वैरिएबल की वैल्यू पर सेट करने के लिए:

Do this (no brackets):
  <Ref>client.host</Ref>

Do NOT do this (brackets):
  <Ref>{client.host}</Ref>

डेस्टिनेशन फ़्लो वैरिएबल के लिए डिफ़ॉल्ट वैल्यू तय करने के लिए, <Value> का इस्तेमाल <Ref> के साथ करें. अगर <Ref> से तय किया गया फ़्लो वैरिएबल मौजूद नहीं है, उसे पढ़ा नहीं जा सकता या वह शून्य है, तो Edge, डेस्टिनेशन फ़्लो वैरिएबल को <Value> की वैल्यू असाइन करता है.

<Ref> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="polic>y_nam<e&qu>ot; 
  Assign<Varia>ble
 <   >Namevariable_na<me/N>ame<
    Refsource_>v<ariable/Ref
  >/AssignVariable
/AssignMessage

उदाहरण 1s23

यहां दिए गए उदाहरण में, फ़्लो वैरिएबल request.header.user-agent की वैल्यू को डेस्टिनेशन फ़्लो वैरिएबल myvar को असाइन किया गया है. साथ ही, क्वेरी पैरामीटर country की वैल्यू को Country वैरिएबल को असाइन किया गया है:

<AssignMessage name="assignvariab>le-<4"
  Assi>gnVar<iabl>e
   < Name>myvar</Na>me
    Refrequest.header.<user>-ag<ent/Ref
  /Assi>gnV<ariable
  Assi>gnVar<iabl>e
    N<ameCo>untry</Na>me
    Refrequest.querypar<am.c>oun<try/Ref
  /Assi>g<nVariable
/Ass>ignMessage

इस उदाहरण में, Edge के लिए किसी भी असाइनमेंट के लिए डिफ़ॉल्ट (या फ़ॉलबैक वैल्यू) तय नहीं की गई है.

उदाहरण 2s23

यहां दिए गए उदाहरण में, फ़्लो वैरिएबल request.header.user-agent की वैल्यू को डेस्टिनेशन फ़्लो वैरिएबल myvar को असाइन किया गया है. साथ ही, क्वेरी पैरामीटर country की वैल्यू को Country वैरिएबल को असाइन किया गया है:

<AssignMessage name="assignvariab>le-<2"
  Assi>gnVar<iabl>e
   < Name>myvar</Na>me
    Refrequest.header.<user>-agen<t/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>gnV<ariable
  Assi>gnVar<iabl>e
    N<ameCo>untry</Na>me
    Refrequest.querypar<am.c>ountr<y/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>g<nVariable
/Ass>ignMessage

इस उदाहरण में, अगर request.header.user-agent फ़्लो वैरिएबल या Country क्वेरी पैरामीटर की वैल्यू शून्य है, पढ़ी नहीं जा सकती या गलत तरीके से बनाई गई है, तो Edge नए वैरिएबल को "ErrorOnCopy" वैल्यू असाइन करता है.

उदाहरण 3s24

<AssignVariable> का इस्तेमाल आम तौर पर, क्वेरी पैरामीटर, हेडर या अनुरोध के साथ पास की जा सकने वाली किसी अन्य वैल्यू की डिफ़ॉल्ट वैल्यू सेट करने के लिए किया जाता है. उदाहरण के लिए, आपने मौसम की जानकारी देने वाली एपीआई प्रॉक्सी बनाई है. इसमें अनुरोध, "w" नाम का एक क्वेरी पैरामीटर लेता है. इस पैरामीटर में उस शहर का आईडी होता है जिसके लिए आपको मौसम की जानकारी चाहिए. अनुरोध किए गए यूआरएल का फ़ॉर्मैट यह है:

http://myCO.com/v1/weather/forecastrss?w=city_ID

"w" के लिए डिफ़ॉल्ट वैल्यू तय करने के लिए, AssignMessage नीति बनाएं. जैसे, यहां दी गई नीति:

<AssignMessage continueOnError="false" enabled="true" nam>e=&<quot;assignvariable-3"
  AssignTo createNew="fals>e&q<uot; transport="http>" <type="request"/
>  I<gnoreUnresolve>dVari<able>strue
  /IgnoreUnres<olved>Varia<ble>s
  AssignVariable
 <   N>amere<quest>.querypa<ram.w/>Nam<e
    Refreques>t<.queryparam.w/>Ref
    Value12797282/Value
  /AssignVariable
/AssignMessage

इस उदाहरण में, <AssignVariable> को request.queryparam.w की वैल्यू मिलती है और यह वैल्यू खुद को असाइन कर देता है. अगर फ़्लो वैरिएबल null है, इसका मतलब है कि अनुरोध से "w" क्वेरी पैरामीटर को हटा दिया गया है, तो इस उदाहरण में <Value> एलिमेंट की डिफ़ॉल्ट वैल्यू का इस्तेमाल किया जाता है. इसलिए, इस एपीआई प्रॉक्सी से ऐसा अनुरोध किया जा सकता है जिसमें "w" क्वेरी पैरामीटर शामिल न हो:

http://myCO.com/v1/weather/forecastrss

...और एपीआई प्रॉक्सी से अब भी मान्य नतीजा मिल रहा हो.

<Value> का इस्तेमाल करते समय, <Ref> की वैल्यू को फ़्लो वैरिएबल होना चाहिए. जैसे, request, response या target ऑब्जेक्ट की प्रॉपर्टी. वैल्यू, आपके बनाए गए कस्टम फ़्लो वैरिएबल की वैल्यू भी हो सकती है.

अगर आपने ऐसा फ़्लो वैरिएबल तय किया है जो <Ref> की वैल्यू के लिए मौजूद नहीं है और <IgnoreUnresolvedVariables> की वैल्यू "true" है, तो Edge एक गड़बड़ी दिखाता है.

<Template> (<AssignVariable> का बच्चा)

यह मैसेज टेंप्लेट के बारे में बताता है. मैसेज टेंप्लेट की मदद से, नीति लागू होने पर वैरिएबल स्ट्रिंग को बदला जा सकता है. साथ ही, लिटरल स्ट्रिंग को घुंघराले ब्रैकेट में रैप किए गए वैरिएबल नामों के साथ जोड़ा जा सकता है. इसके अलावा, मैसेज टेंप्लेट में फ़ंक्शन इस्तेमाल किए जा सकते हैं. जैसे, एस्केपिंग और केस कन्वर्ज़न.

ref एट्रिब्यूट का इस्तेमाल करके, फ़्लो वैरिएबल तय करें. इस वैरिएबल की वैल्यू, मैसेज टेंप्लेट होती है. उदाहरण के लिए, किसी मैसेज टेंप्लेट को डेवलपर ऐप्लिकेशन के कस्टम एट्रिब्यूट के तौर पर सेव किया जा सकता है. जब Edge, एपीआई कुंजी या सुरक्षा टोकन की पुष्टि करने के बाद डेवलपर ऐप्लिकेशन की पहचान करता है, तो <AssignVariable> एलिमेंट, ऐप्लिकेशन के कस्टम एट्रिब्यूट से मैसेज टेंप्लेट का इस्तेमाल कर सकता है. यह सुरक्षा नीति से फ़्लो वैरिएबल के तौर पर उपलब्ध होता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignVariable>
चाइल्ड एलिमेंट कोई नहीं

<Template> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs25

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="polic>y_nam<e" >
  AssignVariabl<e
    Tem>platemessage<_template/Template
    or
    Te><mplate re>f=&<#39;template_va>r<iable'/Tem>plate
  /AssignVariable
/AssignMessage

उदाहरण 1s26

इस उदाहरण में, मैसेज टेंप्लेटिंग सिंटैक्स का इस्तेमाल करके, दो कॉन्टेक्स्ट वैरिएबल को एक साथ जोड़ा गया है. इनके बीच में एक लिटरल स्ट्रिंग (हाइफ़न) है:

<AssignMessage name='AV-via-templat>e-1<'
  IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables
  Assign>Varia<ble<>/span>
    Namemy_destination_<varia>ble/N<ame
 >   Value<BADDBE>EF/Va<lue
    >Template{system.uuid}-{me<ssageid}/>Tem<plate
  /Assign>V<ariable
/Assig>nMessage

दूसरा उदाहरणs27

यहां दिए गए उदाहरण में, फ़्लो वैरिएबल के बारे में बताया गया है. इसमें वैरिएबल की वैल्यू, पहले से तय किया गया मैसेज टेंप्लेट है. अगर आपको नीति में बदलाव किए बिना, रनटाइम पर पहले से तय किया गया टेंप्लेट इंजेक्ट करना है, तो इस विकल्प का इस्तेमाल करें:

<AssignMessage name='AV-via-template-indirec>tly&#<39;  
  IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables
  Assign>Varia<ble<>/span>
    Namemy_destination_<varia>ble/N<ame
 >   Value<BADDBE>EF/Va<lue
    Template ref='my_templat>e_v<ariable'/
 > </AssignVariabl>e
/AssignMessage

उदाहरण 3s28

इस उदाहरण में, फ़्लो वैरिएबल और टेक्स्ट वैल्यू के बारे में बताया गया है. इस मामले में, अगर रेफ़र किया गया वैरिएबल शून्य नहीं है, तो उस वैल्यू का इस्तेमाल टेंप्लेट के तौर पर किया जाता है. अगर रेफ़र की गई वैल्यू शून्य है, तो टेक्स्ट वैल्यू (इस मामले में, {system.uuid}-{messageid}) को टेंप्लेट के तौर पर इस्तेमाल किया जाता है. यह पैटर्न, "बदली गई" वैल्यू देने के लिए काम आता है. कुछ मामलों में, आपको डिफ़ॉल्ट टेंप्लेट (टेक्स्ट वाला हिस्सा) को ऐसी वैल्यू से बदलना होता है जो डाइनैमिक तौर पर सेट की जाती हैं. उदाहरण के लिए, शर्त के साथ इस्तेमाल किया जाने वाला कोई स्टेटमेंट, की-वैल्यू मैप से कोई वैल्यू ले सकता है और रेफ़र किए गए वैरिएबल को उस वैल्यू पर सेट कर सकता है:

<AssignMessage name='AV-template-with-fallb>ack<' 
 IgnoreUnresolvedV>ariab<lesfalse/IgnoreUnresolvedV>ari<ables
  Assign>Varia<ble<>/span>
    Namemy_destination_<varia>ble/N<ame
 >   Value<BADDBE>EF/Va<lue
    Template ref='>my_variable'{system.u<uid}-{mes>sag<eid}/Template
 > </AssignVariabl>e
/AssignMessage

<Value> (<AssignVariable> का बच्चा)

यह <AssignVariable> की मदद से सेट किए गए डेस्टिनेशन फ़्लो वैरिएबल की वैल्यू तय करता है. वैल्यू को हमेशा लिटरल स्ट्रिंग के तौर पर समझा जाता है. वैल्यू के तौर पर फ़्लो वैरिएबल का इस्तेमाल नहीं किया जा सकता. भले ही, आपने वैल्यू को ब्रैकेट ("{}") में रैप किया हो. फ़्लो वैरिएबल का इस्तेमाल करने के लिए, <Ref> का इस्तेमाल करें.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignVariable>
चाइल्ड एलिमेंट कोई नहीं

<Ref> एलिमेंट के साथ इस्तेमाल करने पर, <Value> डिफ़ॉल्ट (या फ़ॉलबैक) वैल्यू के तौर पर काम करता है. अगर <Ref> की वैल्यू नहीं दी गई है, उसे हल नहीं किया जा सकता या वह शून्य है, तो <Value> की वैल्यू का इस्तेमाल किया जाता है.

<Value> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs29

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="polic>y_nam<e&qu>ot; 
  Assign<Varia>ble
 <   Na>mevariable_nam<e/Name>
  <  Valuevariable>_<value/Value
  >/AssignVariable
/AssignMessage

उदाहरण 1

यहां दिए गए उदाहरण में, डेस्टिनेशन फ़्लो वैरिएबल myvar की वैल्यू को लिटरल वैल्यू "42" पर सेट किया गया है:

<AssignMessage name="assignvariab>le-<1"
  Assi>gnVar<iabl>e
   < Name>myvar</Name>
 <   Val>ue4<2/Value
  /Assi>g<nVariable
/Ass>ignMessage

उदाहरण 2

यहां दिए गए उदाहरण में, फ़्लो वैरिएबल request.header.user-agent की वैल्यू को फ़्लो वैरिएबल myvar को असाइन किया गया है. साथ ही, क्वेरी पैरामीटर country की वैल्यू को Country वैरिएबल को असाइन किया गया है:

<AssignMessage name="assignvariab>le-<2"
  Assi>gnVar<iabl>e
   < Name>myvar</Na>me
    Refrequest.header.<user>-agen<t/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>gnV<ariable
  Assi>gnVar<iabl>e
    N<ameCo>untry</Na>me
    Refrequest.querypar<am.c>ountr<y/Ref>
    ValueE<rrorOn>Cop<y/Value
  /Assi>g<nVariable
/Ass>ignMessage

अगर दोनों में से कोई भी असाइनमेंट पूरा नहीं होता है, तो <AssignVariable>, डेस्टिनेशन फ़्लो वैरिएबल को "ErrorOnCopy" वैल्यू असाइन करता है.

<Copy>

यह source एट्रिब्यूट से तय किए गए मैसेज की वैल्यू को से <AssignTo> एलिमेंट से तय किए गए मैसेज की वैल्यू तक कॉपी करता है. अगर आपने <AssignTo> के साथ कोई टारगेट तय नहीं किया है, तो यह नीति अनुरोध या जवाब में वैल्यू कॉपी करती है. यह इस बात पर निर्भर करता है कि फ़्लो में यह नीति कहां लागू होती है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट <FormParams>
<Headers>
<Path>
<Payload>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

अगर <Copy> एलिमेंट के नीचे कोई चाइल्ड एलिमेंट नहीं दिया जाता है, तो यह सोर्स मैसेज के सभी हिस्सों को कॉपी करेगा.

<Copy> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs30

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > name<="policy_name" 
    Co>py so<urce="[request|response]&qu<ot;
    !--> Can also <be an empt>y array< (FormParams/) -->
    FormP>arams
      For<mParam nam>e="formpar<am_name&quo>t;for<mparam_value/FormParam
      ...<
    /Fo>rmParams
 <   !-- >Can als<o be an empty array (Head>ers/) --><
    He>aders
      Hea<der name>=&quo<t;he>ader_name&qu<ot;he>ader_<value/H>eader
      <...
    >/Head<ers
    Path[false|true]/Path
  <  Payload[fa>lse|true]/<Payload
   > !-- Ca<n also be an empty array (QueryPa>rams/) -->
  <  QueryPara>ms
      QueryP<aram name=&q>uot;q<ueryparam_na>me"quer<yparam_value/>Query<Param
    >  ...
    /Q<ueryParams<>/span>
    R<easo>nPhrase[fals<e|tru>e]/Re<asonPhr>ase
    Stat<usCode[f>als<e|tru>e]/<StatusCode
    Verb[false|true]/Verb<
   > Version[f>als<e|true]/Version
  /Copy
  !-- Used as the destination for the Copy values --
  A>ssignTo createNew="[<true|fals>e<]" transp>ort="http"
    type="[request|response]"destination_variable_name/AssignTo
/AssignMessage
  

उदाहरण 1s31

यहां दिए गए उदाहरण में, request मैसेज से हेडर, तीन फ़ॉर्म पैरामीटर, पाथ, और सभी क्वेरी पैरामीटर को newRequest नाम के नए कस्टम अनुरोध में कॉपी किया गया है:

<AssignMessage name="AM-co>py-<1"
  AssignTo createNew="true" transport=&>quot;http&<quot; typ>e=&<quot;request"new>Reque<st/Assi>gnTo
  <Copy source="request&qu>ot;
 <   Heade>rs
  <    Header> name=&<quot;Header_Name_1"/
    /Head>ers
   < FormParams
      FormParam name=&q>uot;For<m_Param_Name_1"/
      FormPar>am na<me="Fo>rm_Pa<ram_>Name<_2&qu>ot;/
<      FormPa>ram< name>=<"Form_Par>am_Name_3"/
    /FormParams
    Pathtrue/Path
    QueryParams/
  /Copy
/AssignMessage

<Payload> और <Verb> जैसे एलिमेंट मौजूद न होने की वजह से, नीति मैसेज के उन हिस्सों को कॉपी नहीं करती है.

उदाहरण 2s32

यहां दिए गए उदाहरण में, सबसे पहले मौजूदा response मैसेज में मौजूद सभी आइटम हटाए जाते हैं. इसके बाद, secondResponse नाम के किसी दूसरे मैसेज से सभी वैल्यू कॉपी करके, response मैसेज में डाली जाती हैं:

<AssignMessage name='AM-Copy-Respo>nse<'
  AssignTo createNew="false" transport=&quo>t;http&q<uot; type>=&q<uot;response"response/AssignTo
  !>-- <first r>emo<ve any existing values --
  Remove/
  !-- then copy eve>ryt<hing from the designated mess>a<ge --
  Copy s>ource="secondResponse"/
/AssignMessage

<Copy> एलिमेंट में सिर्फ़ एक एट्रिब्यूट होता है:

एट्रिब्यूट ब्यौरा ज़रूरी है? टाइप
सोर्स

इससे कॉपी किए गए ऑब्जेक्ट के सोर्स के बारे में पता चलता है.

  • अगर source नहीं दिया गया है, तो यह डिफ़ॉल्ट रूप से message पर सेट होता है. यह वैल्यू, उस फ़्लो के आधार पर अलग-अलग होती है जिसमें नीति लागू होती है. अगर नीति, अनुरोध फ़्लो में लागू होती है, तो message वैरिएबल, request ऑब्जेक्ट को दिखाता है. अगर नीति, रिस्पॉन्स फ़्लो में लागू होती है, तो message वैरिएबल, response ऑब्जेक्ट को रेफ़र करता है.
  • अगर सोर्स वैरिएबल को हल नहीं किया जा सकता या वह मैसेज टाइप का नहीं है, तो <Copy> जवाब नहीं देता है.
वैकल्पिक स्ट्रिंग

<FormParams> (<Copy> का बच्चा)

यह <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए अनुरोध से, फ़ॉर्म पैरामीटर की कॉपी बनाता है. ऐसा इसलिए किया जाता है, ताकि <AssignTo> एलिमेंट से तय किए गए अनुरोध में उनका इस्तेमाल किया जा सके. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <FormParam> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट <FormParam>

<FormParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs33

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce="[request|response]&qu<ot;
    !--> Can also <be an empt>y array< (FormParams/) -->
    FormP>arams
      For<mParam nam>e="formpar<am_name&quo>t;f<ormpa>r<am_value/FormP>aram
      ...
    /FormParams
  /Copy
/AssignMessage

उदाहरण 1s34

इस उदाहरण में, अनुरोध से एक फ़ॉर्म पैरामीटर को "MyCustomRequest" कस्टम अनुरोध में कॉपी किया गया है:

<AssignMessage name="copy-formpara>ms-<1"
  Copy source>=&quo<t;request&>quot;
 <   FormParams
      FormPa>ram name="par<amName&quo>t;For<m param val>ue <1/For>mPa<ram
    /FormParams
  /Copy
  AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo
/AssignMessage

दूसरा उदाहरणs35

यहां दिए गए उदाहरण में, फ़ॉर्म के सभी पैरामीटर को कस्टम अनुरोध "MyCustomRequest" में कॉपी किया गया है:

<AssignMessage name="copy-formpara>ms-<2"
  Copy source>=&quo<t;request&q>uot<;
   > Fo<rmParams/
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

उदाहरण 3s36

यहां दिए गए उदाहरण में, तीन फ़ॉर्म पैरामीटर को कस्टम अनुरोध "MyCustomRequest" में कॉपी किया गया है:

<AssignMessage name="copy-formpara>ms-<3"
  Copy source>=&quo<t;request&>quot;
 <   FormParams
      FormPara>m name=<"paramName1"/
    >  FormP<aram name="paramName2&q>uot;/<
      Form>Par<am na>me=<"paramName3"/
    /FormParams
  /Copy
  AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo
/AssignMessage

उदाहरण 4s37

अगर एक ही नाम वाले कई फ़ॉर्म पैरामीटर हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="copy-formpara>ms-<4"
  Copy source>=&quo<t;request&>quot;
 <   FormParams
      >FormPar<am name="f1&quo>t;/
   <   FormParam name=&quo>t;f2&<quot;/
    >  F<ormPa>ram< name="f3.2"/
    /FormParams
  /Copy
  AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo
/AssignMessage

इस उदाहरण में, "f1", "f2", और "f3" की दूसरी वैल्यू कॉपी की गई है. अगर "f3" में सिर्फ़ एक वैल्यू है, तो उसे कॉपी नहीं किया जाता.

<FormParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: POST
  • मैसेज का टाइप: जवाब
  • इनमें से कोई एक या दोनों:
    • फ़ॉर्म डेटा: इसे किसी वैल्यू पर सेट किया जाता है या "" (खाली स्ट्रिंग) पर सेट किया जाता है. उदाहरण के लिए, curl के साथ, अपने अनुरोध में -d "" जोड़ें.
    • Content-Length हेडर: अगर ओरिजनल अनुरोध में कोई डेटा नहीं है, तो इसे 0 पर सेट करें. अगर डेटा है, तो इसे मौजूदा लंबाई पर सेट करें. उदाहरण के लिए, curl के साथ अपने अनुरोध में -H "Content-Length: 0" जोड़ें.

<FormParams> को कॉपी करने पर, <Copy> मैसेज के Content-Type को "application/x-www-form-urlencoded" पर सेट करता है. इसके बाद, मैसेज को टारगेट सेवा पर भेजता है.

<Headers> (<Copy> का बच्चा)

यह <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए अनुरोध या जवाब के मैसेज से, एचटीटीपी हेडर को से <AssignTo> एलिमेंट से तय किए गए अनुरोध या जवाब के मैसेज में कॉपी करता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <Header> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट <Header>

<Headers> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs38

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce="[request|response]&qu<ot;
    >!-- Can al<so be a>n empty< array (Headers/) -->
>    Headers
<      H>eader name=&quo<t;header>_na<me&qu>o<t;header_value>/Header
      ...
    /Headers
  /Copy
/AssignMessage

उदाहरण 1s39

यहां दिए गए उदाहरण में, अनुरोध से user-agent हेडर को नए, कस्टम अनुरोध ऑब्जेक्ट में कॉपी किया गया है:

<AssignMessage name="copy-heade>rs-<1"
  Copy source>=&quo<t;reque>st"<;
    Headers
      Heade>r nam<e=">use<r-age>nt&<quot;/
    /Headers
  /Copy
  AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo
/AssignMessage

दूसरा उदाहरणs40

सभी हेडर कॉपी करने के लिए, खाली <Headers> एलिमेंट का इस्तेमाल करें. उदाहरण के लिए, यहां दिया गया तरीका अपनाएं:

<AssignMessage name="copy-heade>rs-<2"
  Copy source>=&quo<t;reques>t&q<uot;<>/span>
   < Headers/
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

उदाहरण 3s41

अगर एक ही नाम वाले कई हेडर मौजूद हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="copy-heade>rs-<3"
  Copy source>=&quo<t;reque>st"<;
    Headers
   >   Head<er name="h1&>quot;/
<      Header name=&>quot;<h2">/
 <     >Hea<der name="h3.2"/
    /Headers
  /Copy
  AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo
/AssignMessage

इस उदाहरण में, "h1", "h2", और "h3" की दूसरी वैल्यू कॉपी की गई है. अगर "h3" में सिर्फ़ एक वैल्यू है, तो उसे कॉपी नहीं किया जाता.

<Path> (<Copy> का बच्चा)

इससे यह तय होता है कि पाथ को सोर्स अनुरोध से डेस्टिनेशन अनुरोध में कॉपी किया जाना चाहिए या नहीं. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

अगर "true" है, तो यह नीति <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए अनुरोध मैसेज के पाथ को से <AssignTo> एलिमेंट से तय किए गए अनुरोध मैसेज के पाथ तक कॉपी करती है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<Path> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce>="[requ<est|r>esp<onse]>&<quot;
    Path>[false|true]/Path
  /Copy
/AssignMessage

उदाहरण 1s42

यहां दिए गए उदाहरण से पता चलता है कि AssignMessage नीति को, सोर्स अनुरोध से पाथ को नए, कस्टम अनुरोध ऑब्जेक्ट में कॉपी करना चाहिए:

<AssignMessage name="copy-pa>th-<1"
  Copy source>=&quo<t;re>ques<t&quo>t;
<    P>ath<true/Path
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

<Path> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध

<Payload> (<Copy> का बच्चा)

इससे यह तय होता है कि पेलोड को सोर्स से डेस्टिनेशन पर कॉपी किया जाना चाहिए या नहीं. सोर्स और डेस्टिनेशन, अनुरोध या जवाब हो सकते हैं.

अगर इस नीति को "true" पर सेट किया जाता है, तो यह नीति, <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए मैसेज से पेलोड को कॉपी करके, <AssignTo> एलिमेंट से तय किए गए मैसेज में चिपकाती है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<Payload> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs43

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce=&q>uot;[request<|respons>e]&<quot;>
<    Payload[fa>lse|true]/Payload
  /Copy
/AssignMessage

उदाहरण 1s44

यहां दिए गए उदाहरण में, <Payload> को "true" पर सेट किया गया है, ताकि अनुरोध के पेलोड को अनुरोध से जवाब में कॉपी किया जा सके:

<AssignMessage name="AM-copy-paylo>ad-<1"
  Copy source>=&quo<t;reque>st&q<uot;
   > Pa<yload>tru<e/Payloa>d
  /Cop<y
  Assig>n<Toresponse/Ass>ignTo
/AssignMessage

<QueryParams> (<Copy> का बच्चा)

यह क्वेरी स्ट्रिंग पैरामीटर को <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए अनुरोध से <AssignTo> एलिमेंट से तय किए गए अनुरोध तक कॉपी करता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <QueryParam> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <QueryParam>
चाइल्ड एलिमेंट कोई नहीं

<QueryParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs45

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce="[request|response]&qu<ot;
    !-- >Can also b<e an empty >array (<QueryParams/) --&gt;
    QueryPar>ams
      QueryP<aram name=&>quot;queryparam<_name"q>uer<ypara>m<_value/QueryPa>ram
      ...
    /QueryParams
  /Copy
/AssignMessage

उदाहरण 1s46

यहां दिए गए उदाहरण में, अनुरोध से "my_param" क्वेरी पैरामीटर को कॉपी करके, नए कस्टम अनुरोध ऑब्जेक्ट में डाला गया है:

<AssignMessage name="copy-querypara>ms-<1"
  Copy source>=&quo<t;request&q>uot;
  <  QueryParams
      QueryPa>ram n<ame="my>_pa<ram&q>uot<;/
    /QueryParams
  /Copy
  AssignTo createNew="tr>ue" transp<ort=">;<http" typ>e="request"MyCustomRequest/AssignTo
/AssignMessage

दूसरा उदाहरणs47

इस उदाहरण में, अनुरोध के सभी क्वेरी पैरामीटर को नए कस्टम अनुरोध ऑब्जेक्ट में कॉपी किया गया है:

<AssignMessage name="copy-querypara>ms-<2"
  Copy source>=&quo<t;request&qu>ot;<
    >Que<ryParams/
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

उदाहरण 3s48

अगर एक ही नाम वाले कई क्वेरी पैरामीटर हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="copy-querypara>ms-<3"
  Copy source>=&quo<t;request&q>uot;
  <  QueryParams
      Qu>eryPara<m name="qp1">/
     < QueryParam name="q>p2&qu<ot;/
      Q>uer<yPara>m n<ame="qp3.2"/
    /QueryParams
  /Copy
  AssignT>o createNew=&qu<ot;true&q>u<ot; transport=>"http" type="request"MyCustomRequest/AssignTo
/AssignMessage

इस उदाहरण में, "qp1", "qp2", और "qp3" की दूसरी वैल्यू कॉपी की गई है. अगर "qp3" में सिर्फ़ एक वैल्यू है, तो उसे कॉपी नहीं किया जाता.

<QueryParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: GET
  • मैसेज का टाइप: अनुरोध

<ReasonPhrase> (<Copy> का बच्चा)

इससे यह तय होता है कि सोर्स रिस्पॉन्स से डेस्टिनेशन रिस्पॉन्स में, वजह बताने वाला वाक्यांश कॉपी किया जाना चाहिए या नहीं. इस एलिमेंट से अनुरोध पर कोई असर नहीं पड़ता.

अगर "सही है" पर सेट है, तो यह नीति <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए जवाब से <AssignTo> एलिमेंट से तय किए गए जवाब तक ReasonPhrase को कॉपी करती है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<ReasonPhrase> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs49

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce="[>request|resp<onse]"
 >   <Reaso>n<Phrase[false|t>rue]/ReasonPhrase
  /Copy
/AssignMessage

उदाहरण 1s50

यहां दिए गए उदाहरण में, <ReasonPhrase> को true पर सेट करने का तरीका बताया गया है. सोर्स और <AssignTo> एलिमेंट के बारे में बताई गई जानकारी के मुताबिक, इससे <Copy>, नाम वाले रिस्पॉन्स मैसेज से response ऑब्जेक्ट में वजह का वाक्यांश कॉपी कर लेता है:

<AssignMessage name="AM-copy-reasonphra>se-<1"
  Copy source="serviceC>allou<tResponse&qu>ot;
<    ReasonPhr>ase<true/>Rea<sonPhras>e
  /Cop<y
  Assig>n<Toresponse/Ass>ignTo
/AssignMessage

<ReasonPhrase> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब सोर्स और डेस्टिनेशन मैसेज, रिस्पॉन्स टाइप के हों.

<StatusCode> (<Copy> का बच्चा)

इस कुकी से यह तय होता है कि स्टेटस कोड को सोर्स रिस्पॉन्स से डेस्टिनेशन रिस्पॉन्स में कॉपी किया गया है या नहीं. इस एलिमेंट से अनुरोध पर कोई असर नहीं पड़ता.

अगर "true" है, तो यह नीति, <Copy> एलिमेंट के source एट्रिब्यूट से तय किए गए रिस्पॉन्स मैसेज से स्टेटस कोड को <AssignTo> एलिमेंट से तय किए गए रिस्पॉन्स मैसेज तक कॉपी करती है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<StatusCode> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs52

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce=">;[request|re<sponse]&quo>t;
<    S>t<atusCode[false>|true]/StatusCode
  /Copy
/AssignMessage

उदाहरण 1s53

यहां दिए गए उदाहरण में, <StatusCode> को "true" पर सेट किया गया है. इससे स्टेटस कोड, डिफ़ॉल्ट रिस्पॉन्स ऑब्जेक्ट से नए, कस्टम रिस्पॉन्स ऑब्जेक्ट में कॉपी हो जाता है:

<AssignMessage name="copy-statusco>de-<1"
  Copy source=>"<;response&>quot<;
    Statu>sCo<detru>e/S<tatusCode
  /Copy
  AssignTo createNew="true" tr>ansport="ht<tp" >t<ype="resp>onse"MyCustomResponse/AssignTo
/AssignMessage

<StatusCode> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब सोर्स और डेस्टिनेशन मैसेज, रिस्पॉन्स टाइप के हों.

<StatusCode> का इस्तेमाल आम तौर पर, प्रॉक्सी रिस्पॉन्स स्टेटस कोड को टारगेट से मिले कोड से अलग वैल्यू पर सेट करने के लिए किया जाता है.

<Verb> (<Copy> का बच्चा)

इससे यह तय होता है कि एचटीटीपी वर्ब को सोर्स अनुरोध से डेस्टिनेशन अनुरोध में कॉपी किया गया है या नहीं. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

अगर "true" है, तो <Copy> एलिमेंट के source एट्रिब्यूट में मौजूद क्रिया को <AssignTo> एलिमेंट में दिए गए अनुरोध में कॉपी करता है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<Verb> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs54

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce>="[requ<est|r>esp<onse]>&<quot;
    Verb>[false|true]/Verb
  /Copy
/AssignMessage

उदाहरण 1s55

नीचे दिए गए उदाहरण में, <Verb> को "true" पर सेट किया गया है. इससे डिफ़ॉल्ट अनुरोध से क्रिया को नए, कस्टम अनुरोध में कॉपी किया जाता है:

<AssignMessage name="copy-ve>rb-<1"
  Copy source>=&quo<t;re>ques<t&quo>t;
<    V>erb<true/Verb
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

<Verb> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध

<Version> (<Copy> का बच्चा)

यह कुकी तय करती है कि एचटीटीपी वर्शन को सोर्स अनुरोध से डेस्टिनेशन अनुरोध में कॉपी किया गया है या नहीं. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

अगर "true" पर सेट है, तो <Copy> एलिमेंट के source एट्रिब्यूट में मौजूद एचटीटीपी वर्शन को, <AssignTo> एलिमेंट से तय किए गए ऑब्जेक्ट में कॉपी करता है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Copy>
चाइल्ड एलिमेंट कोई नहीं

<Version> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs56

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name" 
  Co>py so<urce=&q>uot;[request<|respons>e]&<quot;>
<    Version[fa>lse|true]/Version
  /Copy
/AssignMessage

उदाहरण 1s57

इस उदाहरण में, अनुरोध पर <Version> को "true" पर सेट किया गया है. इससे डिफ़ॉल्ट अनुरोध ऑब्जेक्ट से वर्शन को नए, कस्टम अनुरोध ऑब्जेक्ट में कॉपी किया जाता है:

<AssignMessage name="copy-versi>on-<1"
  Copy source>=&quo<t;reque>st&q<uot;
   > Ve<rsion>tru<e/Version
  /Copy
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

<Version> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध

<DisplayName>

इस एट्रिब्यूट का इस्तेमाल, name एट्रिब्यूट के साथ किया जाता है. इससे, मैनेजमेंट यूज़र इंटरफ़ेस (यूआई) के प्रॉक्सी एडिटर में नीति को लेबल किया जा सकता है. इसके लिए, किसी दूसरे और ज़्यादा स्वाभाविक नाम का इस्तेमाल किया जाता है.

<DisplayName> एलिमेंट, सभी नीतियों में शामिल होता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? ज़रूरी नहीं. <DisplayName> को शामिल न करने पर, नीति के name एट्रिब्यूट की वैल्यू का इस्तेमाल किया जाता है
टाइप स्ट्रिंग
पैरंट एलिमेंट <PolicyElement>
चाइल्ड एलिमेंट कोई नहीं

<DisplayName> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<PolicyElement>
  <DisplayName>policy_display_name</DisplayName>
  ...
</PolicyElement>

उदाहरण

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> एलिमेंट में कोई एट्रिब्यूट या चाइल्ड एलिमेंट नहीं है.

<IgnoreUnresolvedVariables>

यह कुकी तय करती है कि जब किसी ऐसे वैरिएबल का सामना होता है जिसे हल नहीं किया जा सकता, तो प्रोसेसिंग बंद हो जाएगी या नहीं.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट कोई नहीं

अनसुलझे वैरिएबल को अनदेखा करने और प्रोसेसिंग जारी रखने के लिए, इसे true पर सेट करें. ऐसा न करने पर, इसे false पर सेट करें. डिफ़ॉल्ट वैल्यू false है.

<IgnoreUnresolvedVariables> को true पर सेट करना, <AssignMessage> के continueOnError को true पर सेट करने से अलग है. ऐसा इसलिए, क्योंकि यह वैरिएबल की वैल्यू सेट करने और पाने से जुड़ा है. अगर आपने continueOnError को true पर सेट किया है, तो Edge सभी गड़बड़ियों को अनदेखा कर देगा. सिर्फ़ उन गड़बड़ियों को नहीं जो वैरिएबल का इस्तेमाल करते समय हुई हैं.

<IgnoreUnresolvedVariables> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs58

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me="policy_name">; 
  IgnoreUnre<solvedVariables[true|false>]<
  /IgnoreUnre>solvedVariables
/AssignMessage

उदाहरण 1s59

यहां दिए गए उदाहरण में, <IgnoreUnresolvedVariables> को "सही" पर सेट करने का तरीका बताया गया है:

<AssignMessage name="AM-Set-Hea>der<s&q>uot;
<  Set
 >   Head<ers
      Header name=&#>39;new-header'{possibly<-defin>ed-va<riable}H>ead<er
 >   </Headers
  /Set
  IgnoreU>nresolv<edVariablestrue
  /IgnoreU>n<resolvedVariab>les
/AssignMessage

<IgnoreUnresolvedVariables> को true पर सेट किया गया है. इसलिए, अगर possibly-defined-variable वैरिएबल को परिभाषित नहीं किया जाता है, तो यह नीति कोई गड़बड़ी नहीं दिखाएगी.

<Remove>

यह कुकी, किसी मैसेज से हेडर, क्वेरी पैरामीटर, फ़ॉर्म पैरामीटर, और/या मैसेज पेलोड को हटाती है. मैसेज, अनुरोध या जवाब हो सकता है. <AssignTo> एलिमेंट का इस्तेमाल करके, यह तय किया जाता है कि <Remove> किस मैसेज पर कार्रवाई करेगा.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट <FormParams>
<Headers>
<Payload>
<QueryParams>

<Remove> का इस्तेमाल आम तौर पर, इनकमिंग अनुरोध ऑब्जेक्ट से ऐसे क्वेरी पैरामीटर या हेडर को मिटाने के लिए किया जाता है जिसमें संवेदनशील जानकारी होती है. ऐसा इसलिए किया जाता है, ताकि उसे बैकएंड सर्वर को न भेजा जा सके.

<Remove> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs60

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=&qu>ot;po<licy_name" 
  Remove
    !-<- Can also >be an empt<y array (F>ormPara<ms/) -->
    FormParams
    >  FormParam nam<e="fo>rmparam_name&qu<ot;formpara>m_val<ue/FormParam
      ...
    /Form<Params
 >   !-- Can< also b>e an em<pty array (Headers/) --&g>t;
    Heade<rs
    >  Header name=&<quot;hea>der_n<ame&quo>t;header_val<ue/Heade>r
   <   ...
    /Headers
    Payload[<false|true]/>Payload
  <  !-- Can a>lso be <an empty array (QueryParams/) --&>gt;
    QueryPar<ams
      Q>ueryParam name=<"queryp>ara<m_name&>q<uot;queryparam>_value/QueryParam
      ...
    /QueryParams
  /Remove
/AssignMessage

उदाहरण 1s61

इस उदाहरण में, जवाब से मैसेज का मुख्य हिस्सा हटाया गया है:

<AssignMessage name="AM-remo>ve-<1"
  D>isplayNa<meremove-1/D>isp<layNam>e
  R<emove
 >   P<ayloadtr>ue/<Payload>
  </Remove
>  Assign<Torespons>e</AssignTo
/Ass>ignMessage

जवाब के फ़्लो में, यह नीति जवाब के मुख्य हिस्से को हटा देती है. साथ ही, क्लाइंट को सिर्फ़ एचटीटीपी हेडर दिखाती है.

दूसरा उदाहरणs62

यहां दिए गए उदाहरण में, request ऑब्जेक्ट से सभी फ़ॉर्म पैरामीटर और क्वेरी पैरामीटर हटाए गए हैं:

<AssignMessage name="AM-remo>ve-<2">;
  R<emove
    !<-- Empty (F>ormParams/) removes all form par>amete<rs --
    F>ormPa<rams/
    Q>ueryPar<ams
      QueryParam n>ame=&<quot;qp1&quo>t;/<
    /Q>uer<yParams
>  /Remo<ve
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 3s63

यहां दिए गए उदाहरण में, मैसेज ऑब्जेक्ट से सभी चीज़ें हटाई गई हैं:

<AssignMessage name="AM-remo>ve-<3">
  <Remove/
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

आम तौर पर, ऐसा सिर्फ़ तब किया जाता है, जब आपको मैसेज में कुछ बदली गई वैल्यू सेट करने के लिए, <Set> एलिमेंट या <Copy> एलिमेंट का इस्तेमाल करना हो.

<FormParams> (<Remove> का बच्चा)

यह फ़ंक्शन, अनुरोध से तय किए गए फ़ॉर्म पैरामीटर हटाता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <FormParam> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <Remove>
चाइल्ड एलिमेंट <FormParam>

<FormParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs64

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=&qu>ot;po<licy_name" 
  Remove
    !-<- Can also >be an empt<y array (F>ormPara<ms/) -->
    FormParams
    >  FormParam nam<e="fo>rmparam_name&qu<ot;formpara>m_v<alue/Fo>r<mParam
      .>..
    /FormParams
  /Remove
/AssignMessage

उदाहरण 1s65

यहां दिए गए उदाहरण में, अनुरोध से तीन फ़ॉर्म पैरामीटर हटाए गए हैं:

<AssignMessage name="AM-remove-formpara>ms-<1">;
  R<emove
    >FormPar<ams
      FormParam name=">;form_p<aram_1"/
      FormParam >name=&q<uot;form_param_2"/
      >FormP<aram name=&>quo<t;form_>par<am_3&quo>t;/
   < /FormPar>a<ms
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

उदाहरण 2s66

यहां दिए गए उदाहरण में, अनुरोध से फ़ॉर्म के सभी पैरामीटर हटा दिए गए हैं:

<AssignMessage name="AM-remove-formpara>ms-<2">;
  R<emove
    F>orm<Params/>
  </Remove
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

उदाहरण 3s67

अगर एक ही नाम वाले कई फ़ॉर्म पैरामीटर हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="AM-remove-formpara>ms-<3">;
  R<emove
    >FormPar<ams
      FormParam >name=&q<uot;f1"/
      >FormPar<am name="f2">/
   <   FormPara>m n<ame=&qu>ot;<f3.2&quo>t;/
   < /FormPar>a<ms
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

इस उदाहरण में, "f1", "f2", और "f3" की दूसरी वैल्यू को हटाया गया है. अगर "f3" में सिर्फ़ एक वैल्यू है, तो उसे नहीं हटाया जाएगा.

<FormParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध
  • Content-Type: "application/x-www-form-urlencoded"

<Headers> (<Remove> का बच्चा)

यह अनुरोध या जवाब से, बताए गए एचटीटीपी हेडर हटाता है. यह <AssignTo> एलिमेंट से तय होता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <Header> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <Remove>
चाइल्ड एलिमेंट <Header>

<Headers> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=&qu>ot;po<licy_name" 
  Remove
    !-<- Can al>so be an e<mpty ar>ray (He<aders/) -->;
    Header>s
      Head<er name>="header_n<ame">;he<ader_va>l<ue/Header
    >  ...
    /Headers
  /Remove
/AssignMessage

पहला उदाहरणs68

यहां दिए गए उदाहरण में, अनुरोध से user-agent हेडर को हटाया गया है:

<AssignMessage name="AM-remove-one-he>ade<r">;
  R<emove
 >   Head<ers
      Header name=&qu>ot;us<er-agent>&qu<ot;/
  >  /<Headers
>  /Remo<ve
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 2s69

यहां दिए गए उदाहरण में, अनुरोध से सभी हेडर हटा दिए गए हैं:

<AssignMessage name="AM-remove-all-hea>der<s">;
  R<emove
  >  H<eaders/>
  </Remove
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

उदाहरण 3s70

अगर एक ही नाम वाले कई हेडर मौजूद हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="AM-remove-heade>rs-<3">;
  R<emove
 >   Head<ers
      Header >name=&q<uot;h1"/
   >   Head<er name="h2&qu>ot;/
<      He>ade<r name=>&qu<ot;h3.2&>quot;/
<    /Head>e<rs
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

इस उदाहरण में, अनुरोध से "h1", "h2", और "h3" की दूसरी वैल्यू को हटाया गया है. अगर "h3" में सिर्फ़ एक वैल्यू है, तो उसे नहीं हटाया जाता.

<Payload> (<Remove> का बच्चा)

यह कुकी तय करती है कि <Remove>, अनुरोध या जवाब में मौजूद पेलोड को मिटाता है या नहीं. यह पेलोड, <AssignTo> एलिमेंट से तय होता है. पे लोड को मिटाने के लिए, इसे "सही" पर सेट करें. ऐसा न करने पर, इसे "गलत" पर सेट करें. इसकी डिफ़ॉल्ट वैल्यू "false" होती है.

डिफ़ॉल्ट वैल्यू गलत
ज़रूरी है? वैकल्पिक
समस्या बूलियन
पैरंट एलिमेंट <Remove>
चाइल्ड एलिमेंट कोई नहीं

<Payload> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=&qu>ot;po<licy_na>me" 
  <Remove
 >   <Payload>[<false|true]/Pa>yload
  /Remove
/AssignMessage

उदाहरण 1s71

यहां दिए गए उदाहरण में, <Payload> को "true" पर सेट किया गया है, ताकि अनुरोध पेलोड को मिटाया जा सके:

<AssignMessage name="AM-remove-paylo>ad-<1">;
  R<emove
 >   P<ayloadtr>ue/<Payload>
  </Remove
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

<QueryParams> (<Remove> का बच्चा)

यह फ़ंक्शन, अनुरोध से तय किए गए क्वेरी पैरामीटर हटाता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <QueryParam> एलिमेंट की कैटगरी या खाली कैटगरी
पैरंट एलिमेंट <Remove>
चाइल्ड एलिमेंट <QueryParam>

<QueryParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs72

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=&qu>ot;po<licy_name" 
  Remove
    !-<- Can also b>e an empty< array (Que>ryParam<s/) -->
    QueryParams
      >QueryParam name=<"query>param_name"<;queryparam_>val<ue/Quer>y<Param
      ..>.
    /QueryParams
  /Remove
/AssignMessage

उदाहरण 1s73

यहां दिए गए उदाहरण में, अनुरोध से एक क्वेरी पैरामीटर हटाया गया है:

<AssignMessage name="AM-remove-querypara>ms-<1">;
  Rem<ove
      Q>ueryParam<s
        QueryParam n>ame=&qu<ot;qp1">/
 <     /Q>uer<yParams
>  /Remo<ve
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 2s74

यहां दिए गए उदाहरण में, अनुरोध से सभी क्वेरी पैरामीटर हटा दिए गए हैं:

<AssignMessage name="AM-remove-querypara>ms-<2">;
  Rem<ove
      Qu>ery<Params/>
  </Remove
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

उदाहरण 3s75

अगर एक ही नाम वाले कई क्वेरी पैरामीटर हैं, तो इस सिंटैक्स का इस्तेमाल करें:

<AssignMessage name="AM-remove-querypara>ms-<3">;
  Rem<ove
      Q>ueryParam<s
        QueryParam n>ame="<;qp1"/
        Qu>eryParam <name="qp2"/
  >      Q<ueryParam na>me=<"q>p3.<2"/>
      </QueryPar>a<ms
  /Remove
 > AssignTorequest/AssignTo
/AssignMessage

इस उदाहरण में, अनुरोध से "qp1", "qp2", और "qp3" की दूसरी वैल्यू को हटाया गया है. अगर "qp3" की सिर्फ़ एक वैल्यू है, तो उसे नहीं हटाया जाएगा.

उदाहरण 4s76

यहां दिए गए उदाहरण में, अनुरोध से apikey क्वेरी पैरामीटर को हटाया गया है:

<AssignMessage name="AM-remove-query-p>ara<m">;
  R<emove
    Q>ueryPar<ams
      QueryParam name>=&quo<t;apikey&quo>t;/<
    /Q>uer<yParams
>  /Remo<ve
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

<QueryParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: GET
  • मैसेज का टाइप: अनुरोध

<Set>

यह अनुरोध या जवाब के मैसेज में ऐसी जानकारी सेट करता है जिसे <AssignTo> एलिमेंट से तय किया जाता है. <Set> हेडर या क्वेरी या फ़ॉर्म पैरामीटर को बदल देता है. ये पैरामीटर, मूल मैसेज में पहले से मौजूद होते हैं. किसी एचटीटीपी मैसेज में हेडर, क्वेरी, और फ़ॉर्म पैरामीटर में एक से ज़्यादा वैल्यू हो सकती हैं. किसी हेडर या पैरामीटर के लिए अतिरिक्त वैल्यू जोड़ने के लिए, <Add> एलिमेंट का इस्तेमाल करें.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या कॉम्प्लेक्स टाइप
पैरंट एलिमेंट <AssignMessage>
चाइल्ड एलिमेंट <FormParams>
<Headers>
<Payload>
<Path>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

<Set> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>"<;policy_na>me"<; 
  Set
    FormParams
      F>ormParam name=&<quot;formp>aram_name"<formparam_v>alue/<FormPar>am
    <  ...
    /FormParams
   > Headers
   <   Head>er name="h<eader_na>me&qu<ot;h>eade<r_val>ue/He<ader
      ...
    /Headers
    Pathpath/Path
    Payload contentType="content_type&q>uot; variab<lePrefix>=&quo<t;prefix&qu>ot;
   <     variableSuffix="suffix&>quot;new_payload</Payload
  >  QueryParams
 <     QueryPa>ram n<ame="qu>eryparam_name&quot;queryparam_<value/QueryPa>ram
 <     ...
 >   /QueryParams
    ReasonPhra<sereason_fo>r_err<or o>r {variable}/ReasonPhrase
    StatusCo<deHTT>P_sta<tus_cod>e or {variable}/Stat<usCod>e
 <   V>e<rb[GET|POST|PU>T|PATCH|DELETE|{variable}]/Verb
    Version[1.0|1.1|{variable}]/Verb
  /Set
/AssignMessage

उदाहरण 1s77

यहां दिए गए उदाहरण में, एक हेडर सेट किया गया है. इस नीति को अनुरोध फ़्लो में अटैच करने पर, अपस्ट्रीम सिस्टम को एक अतिरिक्त हेडर मिलेगा. यह हेडर, ओरिजनल इनबाउंड अनुरोध में शामिल नहीं था.

<AssignMessage name="AM-Set-He>ade<r&q>uot;
<  Set
 >   Header<s
        Header name="authentic>ated-developer"{verifyapikey<.VAK-1.>devel<oper.id}>/He<ader>
  <  /Heade>rs
  /S<et
  Assi>g<nTorequest/Ass>ignTo
/AssignMessage

उदाहरण 2s78

यहां दिए गए उदाहरण में, रिस्पॉन्स के पेलोड के साथ-साथ Content-Type हेडर को भी बदला गया है.

<AssignMessage name="AM-Overwrite-Pay>loa<d&q>uot;
<  Set
    Payload contentType="ap>plication/json&qu<ot;{ &qu>ot;<stat>us&<quot; : >42 }/Pay<load
  /S>e<t
  AssignTore>sponse/AssignTo
/AssignMessage

<FormParams> (<Set> का बच्चा)

यह अनुरोध पर मौजूद फ़ॉर्म पैरामीटर को बदलता है और उन्हें उन नई वैल्यू से बदलता है जिन्हें आपने इस एलिमेंट के साथ तय किया है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <FormParam> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट <FormParam>

<FormParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs79

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_na>me"<; 
  Set
    FormParams
      F>ormParam name=&<quot;formp>aram_name"<formparam_v>alu<e/Fo>r<mParam
      .>..
    /FormParams
  /Set
/AssignMessage

उदाहरण 1s80

यहां दिए गए उदाहरण में, "myparam" नाम के फ़ॉर्म पैरामीटर को नए कस्टम अनुरोध में request.header.myparam वैरिएबल की वैल्यू पर सेट किया गया है:

<AssignMessage name="AM-set-formpara>ms-<1&q>uot;
<  Set
    >FormPar<ams
      FormParam name>="myparam"{req<uest.heade>r.myp<aram}/FormP>ara<m
  >  /<FormParams
  /Set
  AssignTo createNew="true" t>ransport="<http">;< type="re>quest"MyCustomRequest/AssignTo
/AssignMessage

<FormParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: POST
  • मैसेज का टाइप: अनुरोध

अगर आपने अपनी नीति (<Add><FormParams/></Add>) में फ़ॉर्म के खाली पैरामीटर तय किए हैं, तो नीति में फ़ॉर्म के कोई भी पैरामीटर नहीं जोड़े जाते. यह <FormParams> को शामिल न करने जैसा ही है.

<Set>, मैसेज के Content-Type को "application/x-www-form-urlencoded" में बदलता है. इसके बाद, इसे टारगेट एंडपॉइंट पर भेजता है.

<Headers> (<Set> का बच्चा)

यह अनुरोध या जवाब में मौजूद एचटीटीपी हेडर को बदल देता है. इसे <AssignTo> एलिमेंट से तय किया जाता है.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <Header> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट <Header>

<Headers> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs81

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy>_name&q<uot; 
  Set
    Headers
 >     Header <name=&q>uot;header_name<"he>ade<r_va>l<ue/Header
    >  ...
    /Headers
  /Set
/AssignMessage

उदाहरण 1s81

यहां दिए गए उदाहरण में, x-ratelimit-remaining हेडर को ratelimit.Quota-1.available.count वैरिएबल की वैल्यू पर सेट किया गया है:

<AssignMessage name="AM-Set-RateLimit-He>ade<r&q>uot;
<  Set
 >   Head<ers
      Header name="X-RateL>imit-Remaining"{ratelimit.Quot<a-1.ava>ilabl<e.count}>/He<ader>
  <  /Heade>rs
  /Se<t
  Assig>n<Toresponse/Ass>ignTo
/AssignMessage

अगर आपने अपनी नीति में खाली हेडर (<Set><Headers/></Set>) तय किए हैं, तो नीति कोई हेडर सेट नहीं करती है. इससे <Headers> को हटाने जैसा ही असर पड़ेगा.

<Path> (<Set> का बच्चा)

<Payload> (<Set> का बच्चा)

यह अनुरोध या जवाब के लिए मैसेज का मुख्य हिस्सा तय करता है. इसे <AssignTo> एलिमेंट से तय किया जाता है. पेलोड, मान्य कॉन्टेंट टाइप का हो सकता है. जैसे, सामान्य टेक्स्ट, JSON या XML.

डिफ़ॉल्ट वैल्यू खाली स्ट्रिंग
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट कोई नहीं

<Payload> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs82

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_name" 
  Set
    Payload contentType=&quot;content_type" variablePrefix=>"prefi<x"<>/span>
   <    > <variableSuffix>="suffix"new_payload/Payload
  /Set
/AssignMessage

उदाहरण 1s83

इस उदाहरण में, सादा टेक्स्ट वाला पेलोड सेट किया गया है:

<AssignMessage name="set-paylo>ad-<1&q>uot;
<  Set
    Payload contentType=&q>uo<t;text/p>lai<n&qu>o<t;42/Payload
 > /Set
/AssignMessage

उदाहरण 2s84

यहां JSON पेलोड सेट करने का उदाहरण दिया गया है:

<AssignMessage name="set-paylo>ad-<2&q>uot;
<  Set
    Payload contentType="ap>plication/json"
      {"name&q<uot;:&qu>ot;<foo&>q<uot;, "ty>pe":"bar"}
    /Payload
  /Set
/AssignMessage

उदाहरण 3s85

यहां दिए गए उदाहरण में, वैरिएबल के नामों को कर्ली ब्रैकेट में रखकर, वैरिएबल की वैल्यू को पेलोड में डाला गया है:

<AssignMessage name="set-paylo>ad-<3&q>uot;
<  Set
    Payload contentType="ap>plication/json"
      {"name":"f<oo">, &<quot>;<type":&qu>ot;{variable_name}"}
    /Payload
  /Set
/AssignMessage

Apigee के पिछले वर्शन में, JSON पेलोड में वैरिएबल रेफ़रंस दिखाने के लिए कर्ली ब्रेसिज़ का इस्तेमाल नहीं किया जा सकता था. इन रिलीज़ में, आपको डेलिमिटर वर्णों के बारे में बताने के लिए variablePrefix और variableSuffix एट्रिब्यूट का इस्तेमाल करना होता था. साथ ही, वैरिएबल के नामों को रैप करने के लिए इनका इस्तेमाल करना होता था. जैसे:

<AssignMessage name="set-payloa>d-3<b&q>uot;
<  Set
    Payload contentType="application/json" variablePrefix=&q>uot;@" variableSuffix="#"
      {&quo<t;name&q>uot<;:&q>u<ot;foo", >"type":"@variable_name#"}
    /Payload
  /Set
/AssignMessage

यह पुराना सिंटैक्स अब भी काम करता है.

उदाहरण 4s86

<Payload> के कॉन्टेंट को मैसेज टेंप्लेट माना जाता है. इसका मतलब है कि AssignMessage नीति, कर्ली ब्रेसिज़ में रैप किए गए वैरिएबल को रनटाइम में रेफ़र किए गए वैरिएबल की वैल्यू से बदल देती है.

यहां दिए गए उदाहरण में, कर्ली ब्रेसिज़ सिंटैक्स का इस्तेमाल करके, पेलोड के कुछ हिस्से को वैरिएबल वैल्यू पर सेट किया गया है:

<AssignMessage name="set-paylo>ad-<4&q>uot;
<  Set
    Payload contentType=>"t<ext/>xml"<
 >     r<oot>
        <e1>sunday</e1>
        <e2>funday</e2>
      <  e3{>var1}</e3
    >  /<root>
<    /Payload
 > /Set
/AssignMessage

यहां दी गई टेबल में, <Payload> एट्रिब्यूट के बारे में बताया गया है:

एट्रिब्यूट ब्यौरा मौजूदगी टाइप
contentType

अगर यह विकल्प चुना जाता है, तो contentType की वैल्यू को Content-Type एचटीटीपी हेडर को असाइन किया जाता है.

वैकल्पिक स्ट्रिंग
variablePrefix यह फ़्लो वैरिएबल पर मुख्य सीमांकक (डिलिमिटर) के बारे में बताता है. हालांकि, ऐसा करना ज़रूरी नहीं है. इसकी डिफ़ॉल्ट वैल्यू "{" होती है. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें. वैकल्पिक Char
variableSuffix यह विकल्प, फ़्लो वैरिएबल पर ट्रेलिंग डीलिमिटर के बारे में बताता है. इसकी डिफ़ॉल्ट वैल्यू "}" होती है. ज़्यादा जानकारी के लिए, फ़्लो वैरिएबल का रेफ़रंस देखें. वैकल्पिक Char

<QueryParams> (<Set> का बच्चा)

अनुरोध में मौजूद क्वेरी पैरामीटर को नई वैल्यू से बदलता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या <QueryParam> एलिमेंट की कैटगरी
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट <QueryParam>

<QueryParams> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs87

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_nam>e"< 
  Set
    QueryParams
      Que>ryParam name=&qu<ot;querypar>am_name"qu<eryparam_val>ue/<Quer>y<Param
      ..>.
    /QueryParams
  /Set
/AssignMessage

उदाहरण 1s88

यहां दिए गए उदाहरण में, "address" क्वेरी पैरामीटर को request.header.address वैरिएबल की वैल्यू पर सेट किया गया है:

<AssignMessage name="AM-set-querypara>ms<-1&>quot;<  Set
    Q>ueryPar<ams
      QueryParam name>="address"{req<uest.header>.addr<ess}/QueryPa>ram<
   > </QueryParams
 > /Set
/AssignMessage

<QueryParams> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • एचटीटीपी वर्ब: GET
  • मैसेज का टाइप: अनुरोध

अगर आपने अपनी नीति में खाली क्वेरी पैरामीटर (<Set><QueryParams/></Set>) तय किए हैं, तो नीति कोई क्वेरी पैरामीटर सेट नहीं करती है. इसका मतलब है कि <QueryParams> को शामिल नहीं किया गया है.

<ReasonPhrase> (<Set> का बच्चा)

यह कुकी, जवाब में वजह का वाक्यांश सेट करती है. आम तौर पर, इसका इस्तेमाल <StatusCode> के साथ मिलकर डीबग करने के लिए किया जाता है. इस एलिमेंट से अनुरोध पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट कोई नहीं

<ReasonPhrase> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs89

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_name>" 
  Set
    ReasonPhrase<reason_for_er>ror< or >{<variable}/Reas>onPhrase
  /Set
/AssignMessage

उदाहरण 1s90

नीचे दिए गए उदाहरण में, वजह बताने वाले एक सामान्य वाक्यांश के बारे में बताया गया है:

<AssignMessage name="set-reasonphra>se-<1&q>uot;
<  Set
    Re>asonPhraseBa<d medicine/Re>aso<nPhr>ase<
  /Set
  AssignTo createNew="true" transport=&qu>o<t;http" t>ype="response"/
/AssignMessage

उदाहरण 2s91

<ReasonPhrase> के कॉन्टेंट को मैसेज टेंप्लेट माना जाता है. इसका मतलब है कि कर्ली ब्रेसिज़ में रैप किए गए वैरिएबल के नाम को रनटाइम में, रेफ़रंस किए गए वैरिएबल की वैल्यू से बदल दिया जाएगा. जैसा कि यहां दिए गए उदाहरण में दिखाया गया है:

<AssignMessage name="AM-set-reasonphra>se-<2&q>uot;
<  Set
    Re>asonPhrase{calloutresponse.reas<on.phrase}/Re>aso<nPhr>ase<
  /Set
>  Assign<Torespons>e</AssignTo
/Ass>ignMessage

<ReasonPhrase> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: जवाब

<StatusCode> (<Set> का बच्चा)

यह कुकी, रिस्पॉन्स पर स्टेटस कोड सेट करती है. इस एलिमेंट से अनुरोध पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू '200' (जब <AssignTo> के createNew एट्रिब्यूट को 'true' पर सेट किया जाता है)
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग या variable
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट कोई नहीं

<StatusCode> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs92

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy_na>me" 
  Set
    StatusCode<HTTP_status>_co<de o>r< {variable}/St>atusCode
  /Set
/AssignMessage

उदाहरण 1

यहां दिए गए उदाहरण में, एक सामान्य स्टेटस कोड सेट किया गया है:

<AssignMessage name="AM-set-statuscode>-40<4&q>uot;
<  Set
    >Sta<tusCode404/>Sta<tusC>ode<
  /Set
>  Assign<Torespons>e</AssignTo
/Ass>ignMessage

उदाहरण 2

<StatusCode> के कॉन्टेंट को मैसेज टेंप्लेट माना जाता है. इसका मतलब है कि कर्ली ब्रेसिज़ में रैप किए गए वैरिएबल के नाम को रनटाइम में, रेफ़रंस किए गए वैरिएबल की वैल्यू से बदल दिया जाएगा. उदाहरण के लिए:

<AssignMessage name="set-statusco>de-<2&q>uot;
<  Set
    >StatusCode{calloutresponse.st<atus.code}/>Sta<tusC>ode<
  /Set
>  Assign<Torespons>e</AssignTo
/Ass>ignMessage

<StatusCode> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: जवाब

<Verb> (<Set> का बच्चा)

यह अनुरोध पर एचटीटीपी वर्ब सेट करता है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग या variable
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट कोई नहीं

<Verb> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;pol>icy_name" 
  Set
    Verb[GET|POS<T|PUT>|PA<TCH|>D<ELETE|{variabl>e}]/Verb
  /Set
/AssignMessage

उदाहरण 1s93

यहां दिए गए उदाहरण में, अनुरोध पर एक सामान्य क्रिया सेट की गई है:

<AssignMessage name="AM-set-ve>rb-<1&q>uot;
<  Se>t
  <  Ver>bPO<ST/V>erb<
  /Set
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

उदाहरण 2s94

<Verb> के कॉन्टेंट को मैसेज टेंप्लेट माना जाता है. इसका मतलब है कि कर्ली ब्रेसिज़ में रैप किए गए वैरिएबल के नाम को रनटाइम में, रेफ़र किए गए वैरिएबल की वैल्यू से बदल दिया जाएगा.

नीचे दिए गए उदाहरण में, किसी क्रिया को भरने के लिए वैरिएबल का इस्तेमाल किया गया है:

<AssignMessage name="AM-set-verb-to-dynamic-v>alu<e&q>uot;
<  Se>t
    Verb{my<_vari>abl<e}/V>erb<
  /Set
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

<Verb> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध

<Version> (<Set> का बच्चा)

यह कुकी, अनुरोध पर एचटीटीपी वर्शन सेट करती है. इस एलिमेंट का जवाब पर कोई असर नहीं पड़ता.

डिफ़ॉल्ट वैल्यू लागू नहीं
ज़रूरी है? वैकल्पिक
समस्या स्ट्रिंग या variable
पैरंट एलिमेंट <Set>
चाइल्ड एलिमेंट कोई नहीं

<Version> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्सs95

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
   > na<me=>&quot<;policy>_name" 
  Set
 <   Ve>rsi<on[1>.<0|1.1|{variabl>e}]/Verb
  /Set
/AssignMessage

उदाहरण 1s96

यहां दिए गए उदाहरण में, वर्शन नंबर को "1.1" पर सेट किया गया है:

<AssignMessage name="AM-set-versi>on-<1&q>uot;
<  Set
 >   <Version1>.1/<Vers>io<n
  /Set
 /Ass>ignMessage

उदाहरण 2

यहां कर्ली ब्रैकेट में वैरिएबल का इस्तेमाल करके, वर्शन नंबर सेट किया गया है:

<AssignMessage name="AM-set-versi>on-<2&q>uot;
<  Set
 >   Version{m<y_versio>n}/<Vers>ion<
  /Set
>  Assig<nToreques>t</AssignTo
/Ass>ignMessage

<Version> के कॉन्टेंट को मैसेज टेंप्लेट माना जाता है. इसका मतलब है कि कर्ली ब्रेसिज़ में रैप किए गए वैरिएबल के नाम को रनटाइम में, रेफ़र किए गए वैरिएबल की वैल्यू से बदल दिया जाएगा.

<Version> का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब ये शर्तें पूरी हों:

  • मैसेज का टाइप: अनुरोध

अनुरोध के लिए कस्टम मैसेज बनाना

कस्टम अनुरोध मैसेज बनाने के लिए, AssignMessage नीति का इस्तेमाल किया जा सकता है. कस्टम अनुरोध बनाने के बाद, इसे इन तरीकों से इस्तेमाल किया जा सकता है:

  • अन्य नीतियों में इसके वैरिएबल ऐक्सेस करना
  • इसे किसी बाहरी सेवा को पास करें

कस्टम अनुरोध मैसेज बनाने के लिए, AssignMessage नीति में <AssignTo> एलिमेंट का इस्तेमाल करें. createNew को "true" पर सेट करें. साथ ही, एलिमेंट के मुख्य हिस्से में नए मैसेज का नाम डालें. उदाहरण के लिए, यहां देखें:

<AssignMessage name="AM-assign>to-2<" 
  AssignTo createNew="true" transport=&>quot;http" <type=&quo>t;<request"N>ameOfNewMessage/AssignTo 
/AssignMessage

डिफ़ॉल्ट रूप से, Edge कस्टम अनुरोध मैसेज के साथ कुछ नहीं करता है. इसे बनाने के बाद, Edge ओरिजनल अनुरोध के साथ फ़्लो को जारी रखेगा. कस्टम अनुरोध का इस्तेमाल करने के लिए, अपने प्रॉक्सी में ServiceCallout नीति जैसी कोई नीति जोड़ें. इससे कस्टम अनुरोध को किसी बाहरी सेवा पर भेजा जा सकेगा.

यहां दिए गए उदाहरणों में, कस्टम अनुरोध वाले मैसेज बनाए गए हैं:

उदाहरण 1s97

यहां दिए गए उदाहरण में, Assign Message की मदद से कस्टम अनुरोध ऑब्जेक्ट बनाया गया है:

<AssignMessage name="AssignMessa>ge-<3"
  AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;M>yCust<omReque>st/Ass<ignTo
  Copy
    Headers
>     <Header n>ame<=&quo>t;u<ser>-agen<t"/
  >  /Head<ers
  /Copy
  Set
    Que>ryParams
      QueryParam< name=">;addr<ess"{re>quest<.que>ryp<aram.>add<y}/Q>uer<yParam
    /QueryParams
 >   VerbG<ET/Verb
  /Set
  IgnoreUnr>e<solvedVariable>sfalse
  /IgnoreUnresolvedVariables
/AssignMessage

इस उदाहरण में:

  • यह "MyCustomRequest" नाम का नया अनुरोध मैसेज ऑब्जेक्ट बनाता है.
  • MyCustomRequest पर, यह नीति:
    • यह कुकी, आने वाले अनुरोध से user-agent एचटीटीपी हेडर की वैल्यू को नए मैसेज में कॉपी करती है. <Copy>, user-agent फ़्लो वैरिएबल के ऐब्सलूट रेफ़रंस का इस्तेमाल करता है. इसलिए, <Copy> के लिए source एट्रिब्यूट की वैल्यू देने की ज़रूरत नहीं है.
    • यह कस्टम मैसेज पर address क्वेरी पैरामीटर को, आने वाले अनुरोध के addy क्वेरी पैरामीटर की वैल्यू पर सेट करता है.
    • इस विकल्प की मदद से, एचटीटीपी वर्ब को GET पर सेट किया जाता है.
  • इस कुकी से <IgnoreUnresolvedVariables> को "false" पर सेट किया जाता है. जब <IgnoreUnresolvedVariables> की वैल्यू "गलत है" पर सेट होती है, तो अगर नीति के ज़रिए जोड़े जाने वाले किसी एक वैरिएबल का डेटा मौजूद नहीं होता है, तो Edge, एपीआई फ़्लो में प्रोसेसिंग बंद कर देगा.

उदाहरण 2s98

यहां एक और उदाहरण दिया गया है, जिसमें AssignMessage का इस्तेमाल करके कस्टम अनुरोध ऑब्जेक्ट बनाने का तरीका बताया गया है:

<AssignMessage name="AssignMessa>ge-<2"
  AssignTo createNew="true&>quot; type=&quo<t;request>&qu<ot;>partn<er.r>eque<st/As>signT<o
  Set
    VerbPOST/Verb
    >Payload< conten><tType=&qu>ot;<text/xml&q><uot;
   >   re<questope>rat<ion1>0<5/operation/re>quest
    /Payload
  /Set
/AssignMessage

इस उदाहरण में, "partner.request" नाम का एक नया कस्टम अनुरोध बनाया गया है. इसके बाद, यह कुकी नए अनुरोध पर <Verb> और <Payload> सेट करती है.

फ़्लो में बाद में लागू होने वाली AssignMessage नीति में, कस्टम अनुरोध मैसेज को ऐक्सेस किया जा सकता है. यहां दिए गए उदाहरण में, कस्टम अनुरोध मैसेज के user-agent हेडर की वैल्यू मिलती है:

<AssignMessage name="custom-request-1-ac>ces<s"
  D>isplayNamecustom-reques<t-1-access/D>isp<layName
>  AssignTopartn<er.reques>t/A<ssi>gnTo
<  Set
 >   Head<ers
      Header name="user-agentCop>yCustomRequest"{MyCustomReques<t.heade>r.use<r-agent}>/He<ader>
<    /Headers
 > /Set
/AssignMessage

वीडियो

AssignMessage नीति के बारे में ज़्यादा जानने के लिए, यहां दिए गए वीडियो देखें.

वीडियो ब्यौरा
मैसेज से जुड़ी नीति असाइन क्यों करें? बैकएंड कोड में बदलाव किए बिना, एपीआई अनुरोध या जवाब में बदलाव करने के लिए, AssignMessage नीति का इस्तेमाल करने के फ़ायदों के बारे में जानें.
AssignMessage नीति का इस्तेमाल करके, एपीआई एलिमेंट कॉपी करना AssignMessage नीति का इस्तेमाल करके, एपीआई अनुरोध या जवाब से एलिमेंट कॉपी करें और नया अनुरोध या जवाब ऑब्जेक्ट बनाएं.
AssignMessage नीति का इस्तेमाल करके, एपीआई एलिमेंट हटाना AssignMessage नीति का इस्तेमाल करके, एपीआई एलिमेंट हटाएं और टारगेट बैकएंड तक पहुंचने से पहले एपीआई में बदलाव करें.
AssignMessage नीति का इस्तेमाल करके, एपीआई एलिमेंट जोड़ना और सेट करना AssignMessage नीति का इस्तेमाल करके, क्वेरी पैरामीटर, हेडर, फ़ॉर्म पैरामीटर या पेलोड जोड़कर, एपीआई अनुरोध या जवाब में बदलाव करें.
AssignMessage नीति का इस्तेमाल करके कस्टम वैरिएबल बनाना AssignMessage नीति का इस्तेमाल करके, कस्टम फ़्लो वैरिएबल सेट करें. साथ ही, एपीआई प्रॉक्सी में मौजूद अन्य नीतियों में वैरिएबल का फ़ायदा पाएं.
AssignMessage नीति का इस्तेमाल करके, नए अनुरोध या जवाब ऑब्जेक्ट बनाना एपीआई रनटाइम पर AssignMessage नीति का इस्तेमाल करके, नए एपीआई अनुरोध या जवाब ऑब्जेक्ट बनाएं.
AssignMessage नीति का इस्तेमाल करके, मॉक एपीआई बनाना रिस्पॉन्स फ़्लो में AssignMessage नीति जोड़कर, एक सामान्य मॉक REST API बनाएं.
AssignMessage नीति का इस्तेमाल करके, पेलोड सेट करना या उसमें बदलाव करना API रनटाइम पर AssignMessage नीति का इस्तेमाल करके, SOAP पेलोड सेट करके REST अनुरोध को SOAP अनुरोध में बदलें नीति.

गड़बड़ी के कोड

इस सेक्शन में, गड़बड़ी के कोड और गड़बड़ी के मैसेज के बारे में बताया गया है. साथ ही, इन गड़बड़ियों के वैरिएबल के बारे में भी बताया गया है, जो Edge की मदद से सेट किए जाते हैं. यह जानकारी जानना ज़रूरी है कि क्या आप गड़बड़ियों को ठीक करता है. ज़्यादा जानने के लिए, आपके लिए ज़रूरी जानकारी देखें नीति से जुड़ी गड़बड़ियों और हैंडलिंग के बारे में जानकारी गलतियां.

रनटाइम की गड़बड़ियां

नीति के लागू होने पर ये गड़बड़ियां हो सकती हैं.

गड़बड़ी कोड एचटीटीपी कोड स्थिति वजह ठीक करें
steps.assignmessage.SetVariableFailed 500 नीति, वैरिएबल सेट नहीं कर सकी. नाम के लिए गड़बड़ी वाली स्ट्रिंग देखें वैरिएबल सेट न किए गए हों.
steps.assignmessage.VariableOfNonMsgType 500

यह गड़बड़ी तब होती है, जब <Copy> एलिमेंट में मौजूद source एट्रिब्यूट किसी वैरिएबल पर सेट होता है यह मैसेज टाइप का नहीं है.

मैसेज टाइप वैरिएबल, सभी एचटीटीपी अनुरोधों और जवाबों को दिखाते हैं. बिल्ट-इन Edge फ़्लो वैरिएबल request, response, और message मैसेज टाइप के हैं. ज़्यादा जानकारी के लिए मैसेज वैरिएबल के बारे में जानने के लिए, वैरिएबल रेफ़रंस देखें.

steps.assignmessage.UnresolvedVariable 500

यह गड़बड़ी तब होती है, जब मैसेज असाइन करें नीति में तय किया गया वैरिएबल:

  • दायरे से बाहर है (उस खास फ़्लो में उपलब्ध नहीं है जहां नीति लागू की जा रही है)
  • या
  • हल नहीं किया जा सकता (तय नहीं है)

डिप्लॉयमेंट से जुड़ी गड़बड़ियां

ये गड़बड़ियां तब हो सकती हैं, जब इस नीति वाली प्रॉक्सी को डिप्लॉय किया जाता है.

गड़बड़ी का नाम वजह ठीक करें
InvalidIndex अगर 'असाइन करें' मैसेज के <Copy> और/या <Remove> एलिमेंट में इस इंडेक्स के बारे में बताया गया है नीति शून्य या नेगेटिव संख्या है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.
InvalidVariableName अगर चाइल्ड एलिमेंट <Name> खाली है या <AssignVariable> एलिमेंट में नहीं बताया गया है, तो तो API प्रॉक्सी का परिनियोजन विफल हो जाता है, क्योंकि जिसे मान असाइन करना है. वैरिएबल का मान्य नाम डालना ज़रूरी है.
InvalidPayload नीति में बताया गया पेलोड अमान्य है.

गड़बड़ी के वैरिएबल

ये वैरिएबल तब सेट किए जाते हैं, जब यह नीति रनटाइम के दौरान कोई गड़बड़ी ट्रिगर करती है. ज़्यादा जानकारी के लिए, देखें आपको क्या नीति से जुड़ी गड़बड़ियों के बारे में जानकारी होनी चाहिए.

वैरिएबल कहां उदाहरण
fault.name="fault_name" fault_name गड़बड़ी का नाम है, जैसा कि ऊपर रनटाइम में गड़बड़ियां टेबल में बताया गया है. गड़बड़ी का नाम, गड़बड़ी के कोड का आखिरी हिस्सा होता है. fault.name Matches "UnresolvedVariable"
assignmessage.policy_name.failed policy_name, उपयोगकर्ता की ओर से बताया गया उस नीति का नाम है जिसमें गड़बड़ी हुई है. assignmessage.AM-SetResponse.failed = true

गड़बड़ी के रिस्पॉन्स का उदाहरण

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.assignmessage.VariableOfNonMsgType"
      },
      "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message"
   }
}

गड़बड़ी के नियम का उदाहरण

    <FaultRule name="Assign Message Faults">    <Step>
        <Name>AM-CustomNonMessageTypeErrorResponse</Name>
        <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition>
    </Step>
    <Step>
        <Name>AM-CustomSetVariableErrorResponse</Name>
        <Condition>(fault.name = "SetVariableFailed")</Condition>
    </Step>
    <Condition>(assignmessage.failed = true) </Condition>
</FaultRule>

स्कीमा

नीति के हर टाइप को एक्सएमएल स्कीमा (.xsd) के ज़रिए तय किया जाता है. रेफ़रंस के लिए, नीति के स्कीमा GitHub पर उपलब्ध हैं.

मिलते-जुलते विषय

AssignMessage नीति के काम करने के सैंपल, API Platform के सैंपल में उपलब्ध हैं.

ProxyEndpoint से target.url को बदलने के तरीके का ज़्यादा बेहतर उदाहरण देखने के लिए, Apigee कम्यूनिटी का यह लेख पढ़ें.

ServiceCallout नीति में "सेट पाथ" को ऐक्शन में देखने के लिए, Apigee GitHub के सैंपल में यह उदाहरण देखें और खुद करके सीखें. बस रिपॉज़िटरी को क्लोन करें और उस विषय में दिए गए निर्देशों का पालन करें. इस उदाहरण में, AssignMessage नीति का इस्तेमाल करके अनुरोध का पाथ सेट किया गया है. इसके बाद, Service Callout नीति का इस्तेमाल करके बाहरी सेवा से अनुरोध किया गया है.