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

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

क्या

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

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

ConsentMessage नीति के साथ, आप आम तौर पर अनुरोध या प्रतिक्रिया दें. हालांकि, आप एक कस्टम कस्टम मैसेज बनाने के लिएassignMessage नीति का भी इस्तेमाल कर सकते हैं और उसे किसी दूसरे टारगेट को भेजने की कोशिश कर सकता है. पसंद के मुताबिक अनुरोध वाले मैसेज बनाएं.

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

<AssignMessage> एलिमेंट

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

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

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

सिंटैक्स

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

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <!-- All AssignMessage child elements are optional -->
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>

  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>

  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
    <Value>variable_value</Value>
  </AssignVariable>

  <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>[false|true]</Path>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>[false|true]</ReasonPhrase>
    <StatusCode>[false|true]</StatusCode>
    <Verb>[false|true]</Verb>
    <Version>[false|true]</Version>
  </Copy>

  <DisplayName>policy_display_name</DisplayName>

  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>

  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>

  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>path</Path>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>

</AssignMessage>

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

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

<AssignMessage continueOnError="false" enabled="true" name="assign-message-default">
  <DisplayName>Assign Message-1</DisplayName>
  <Properties/>
  <Copy source="request">
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <Payload/>
    <Verb/>
    <StatusCode/>
    <ReasonPhrase/>
    <Path/>
  </Copy>
  <Remove>
    <Headers>
      <Header name="h1"/>
    </Headers>
    <QueryParams>
      <QueryParam name="q1"/>
    </QueryParams>
    <FormParams>
      <FormParam name="f1"/>
    </FormParams>
    <Payload/>
  </Remove>
  <Add>
    <Headers/>
    <QueryParams/>
    <FormParams/>
  </Add>
  <Set>
    <Headers/>
    <QueryParams/>
    <FormParams/>
    <!-- <Verb>GET</Verb> -->
    <Path/>
  </Set>
  <AssignVariable>
    <Name>name</Name>
    <Value/>
    <Ref/>
  </AssignVariable>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

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

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

नीचे दी गई टेबल, <AssignMessage>:

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

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

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

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

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

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

उदाहरण

नीचे दिए गए उदाहरणों में कुछ ऐसे तरीके बताए गए हैं जिनसे आप AdminMessage नीति का इस्तेमाल कर सकते हैं नीति:

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

नीचे दिए गए उदाहरण में, <Add> एलिमेंट:

<AssignMessage continueOnError="false" enabled="true" name="add-headers-1">
  <Add>
    <Headers>
      <Header name="user-agent">{request.user.agent}</Header>
    </Headers>
  </Add>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

2: पेलोड हटाएं

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

<AssignMessage continueOnError="false" enabled="true" name="remove-1">
  <DisplayName>remove-1</DisplayName>
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

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

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

<AssignMessage name="modify-response">
  <Set>
    <Headers>
      <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header>
    </Headers>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" type="response"></AssignTo>
</AssignMessage>

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

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

इस नीति के ज़रिए रिस्पॉन्स मैसेज में जोड़ा गया एचटीटीपी हेडर, वैरिएबल से लिया गया है यह जानकारी lookupकैश नीति से अपने-आप भर जाती है. इसलिए, इसके ज़रिए जवाबी मैसेज में बदलाव किया गया मैसेज असाइन करने से जुड़ी नीति में एक एचटीटीपी हेडर होता है. इससे पता चलता है कि नतीजे कैश मेमोरी से लिया गया है या नहीं. रिस्पॉन्स में हेडर सेट करना, डीबग करने के लिए आसान हो सकता है और समस्या हल करने के लिए.

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

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

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

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

<AssignMessage name="set-dynamic-content">
  <AssignTo createNew="false" type="response"></AssignTo>
  <Set>
    <Payload contentType="text/xml">
      <User-agent>{request.header.user-agent}</User-agent>
    </Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

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

<AssignMessage name="set-payload">
  <Payload contentType="application/json" variablePrefix="@" variableSuffix="#">
  {
     "user-agent": "@request.header.user-agent#"
  }
  </Payload>
</AssignMessage>

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

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

5: क्वेरी पैरामीटर निकालें

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

<AssignMessage name="remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

  1. अनुरोध में, स्टैटिक वैल्यू के साथ तीन फ़्लो वैरिएबल बनाता है
  2. अनुरोध फ़्लो में, दूसरी नीति में डाइनैमिक तौर पर फ़्लो वैरिएबल फ़ेच करता है
  3. इसे रिस्पॉन्स के पेलोड में सेट करता है
<!-- Policy #1: Set variables in the request -->
<AssignMessage continueOnError="false" enabled="true" name="set-variables">
    <!-- Create a variable named myAppSecret -->
    <AssignVariable>
        <Name>myAppSecret</Name>
        <Value>42</Value>
    </AssignVariable>
    <!-- Create a variable named config.environment -->
    <AssignVariable>
        <Name>config.environment</Name>
        <Value>test</Value>
    </AssignVariable>
    <!-- Create a variable named config.protocol -->
    <AssignVariable>
        <Name>config.protocol</Name>
        <Value>gopher</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

<!-- Policy #2: Get variables from the request -->
<AssignMessage continueOnError="false" enabled="true" name="get-variables">
  <AssignTo createNew="false" transport="http" type="request"/>
  <!-- Get the value of myAppSecret and create a new variable, secret -->
  <AssignVariable>
    <Name>secret</Name>
    <Ref>myAppSecret</Ref>
    <Value>0</Value>
  </AssignVariable>
  <!-- Get the value of config.environment and create a new variable, environment -->
  <AssignVariable>
    <Name>environment</Name>
    <Ref>config.environment</Ref>
    <Value>default</Value>
  </AssignVariable>
  <!-- Get the value of config.protocol and create a new variable, protocol -->
  <AssignVariable>
    <Name>protocol</Name>
    <Ref>config.protocol</Ref>
    <Value>default</Value>
  </AssignVariable>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

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

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

  1. अनुरोध फ़्लो में #1 और #2 नीतियां जोड़ें. नीति #1 को नीति से पहले ज़रूर रखें #2.
  2. रिस्पॉन्स फ़्लो में तीसरी नीति जोड़ें.
  3. तीसरी नीति, रिस्पॉन्स में वैरिएबल जोड़ने के लिए <Set> एलिमेंट का इस्तेमाल करती है. कॉन्टेंट बनाने नीचे दिए गए उदाहरण में, एज क्लाइंट को दिए गए रिस्पॉन्स के तौर पर एक एक्सएमएल पेलोड बनाया गया है:
    <!-- Policy #3: Add variables to the response -->
    <AssignMessage continueOnError="false" enabled="true" name="put-em-in-the-payload">
      <DisplayName>put-em-in-the-payload</DisplayName>
      <Set>
        <Payload contentType="application/xml">
          <wrapper>
            <secret>{secret}</secret>
            <config>
              <environment>{environment}</environment>
              <protocol>{protocol}</protocol>
            </config>
          </wrapper>
        </Payload>
      </Set>
      <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
      <AssignTo createNew="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: सेवा कॉल आउट रिस्पॉन्स हेडर पाएं

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

<AssignMessage continueOnError="false" enabled="true" name="get-header">
  <Set>
    <Payload contentType="application/json">
      {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"}
    </Payload>
  </Set>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

{calloutResponse.header.Set-Cookie.values}

इस रेफ़रंस के हर चाइल्ड एलिमेंट में कुछ और उदाहरण हैं. और ज़्यादा उदाहरणों के लिए, यह देखें assignMessage का उदाहरण GitHub पर.

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

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

<Add>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="name">{request.queryparam.name}</FormParam>
      <FormParam name="zip">{request.queryparam.zipCode}</FormParam>
      <FormParam name="lang">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <AssignTo transport="http" type="request"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage continueOnError="false" enabled="true" name="add-headers-1">
  <Add>
    <Headers>
      <Header name="user-agent">{request.user.agent}</Header>
    </Headers>
  </Add>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

उदाहरण 3

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

<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

इस उदाहरण में, अनुरोध के प्रीफ़्लो में <Add> का इस्तेमाल किया गया है. अगर इन नतीजों को किसी टूल में देखा जाता है, जैसे कि ट्रेस टूल, "http://httpbin.org/get" को किया गया अनुरोध बन जाती है &quot;http://httpbin.org/get?myParam=42&quot;.

<Add> के चाइल्ड एलिमेंट, डाइनैमिक स्ट्रिंग के विकल्प के साथ काम करते हैं. इसे इस नाम से जाना जाता है मैसेज का टेंप्लेट.

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
  </Add>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="add-formparams-1">
  <Add>
    <FormParams>
      <FormParam name="answer">42</FormParam>
    </FormParams>
  </Add>
  <AssignTo transport="http" type="request"></AssignTo>
</AssignMessage>

उदाहरण 2

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

<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2">
  <Add>
    <FormParam name="name">{request.queryparam.name}</FormParam>
  </Add>
</AssignMessage>

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

उदाहरण 3

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

<AssignMessage continueOnError="false" enabled="true" name="add-formparams-3">
  <Add>
    <FormParams>
      <FormParam name="name">{request.queryparam.name}</FormParam>
      <FormParam name="zip">{request.queryparam.zipCode}</FormParam>
      <FormParam name="lang">{request.queryparam.lang}</FormParam>
    </FormParams>
  </Add>
  <AssignTo transport="http" type="request"/>
</AssignMessage>

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

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

%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=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 हेडर को इस पर सेट कर देता है: &quot;application/x-www-form-urlencoded&quot; टारगेट की गई सेवा को मैसेज भेजने से पहले.

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Add>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="add-headers-1">
  <Add>
    <Headers>
      <Header name="user-agent">{request.user.agent}</Header>
    </Headers>
  </Add>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Add>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Add>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="add-queryparams-1">
  <Add>
    <QueryParams>
      <QueryParam name="myParam">42</QueryParam>
    </QueryParams>
  </Add>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

<AssignTo>

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>

उदाहरण 1

नीचे दिए गए उदाहरण में बताया गया है कि टारगेट वह मूल अनुरोध है जिसे टारगेट एंडपॉइंट:

<AssignMessage name="assignto-1">
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

उदाहरण 2

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

<AssignMessage name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

जब कोई नया अनुरोध या रिस्पॉन्स ऑब्जेक्ट बनाया जाता है, तोassignMessage नीति के दूसरे एलिमेंट नीति (जैसे कि <Add>, <Set>, और <Set>) अनुरोध किया गया ऑब्जेक्ट.

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

उदाहरण 3

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

<AssignMessage name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"&gt;MyRequestObject&lt;/AssignTo>
</AssignMessage>

जब कोई नया अनुरोध या रिस्पॉन्स ऑब्जेक्ट बनाया जाता है, तोassignMessage नीति के दूसरे एलिमेंट नीति (जैसे कि <Add>, <Set>, और <Set>) अनुरोध किया गया ऑब्जेक्ट.

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

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

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

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

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

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

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

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

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

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

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

वैकल्पिक स्ट्रिंग
type जब createNew "सही" पर सेट होता है, तो यह जानकारी देती है कि नया मैसेज किस तरह का है. मान्य वैल्यू "अनुरोध" हैं या "जवाब" शामिल है.

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

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

<AssignVariable>

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

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

आपके डेस्टिनेशन फ़्लो वैरिएबल को जो वैल्यू असाइन की जाती है वह इनमें से कोई एक हो सकती है:

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
    <Value>variable_value</Value>
  </AssignVariable>
</AssignMessage>

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

उदाहरण 1

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

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

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

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

उदाहरण 3

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

<AssignMessage name='template-1'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
  </AssignVariable>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

अगर 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]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Ref>source_variable</Ref>
  </AssignVariable>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="assignvariable-4">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
  </AssignVariable>
</AssignMessage>

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

उदाहरण 2

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

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

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

उदाहरण 3

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

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

"w" के लिए डिफ़ॉल्ट मान तय करने के लिए, मान लें कि फ़ॉलो किया जा रहा है:

<AssignMessage continueOnError="false" enabled="true" name="assignvariable-3">
  <AssignTo createNew="false" transport="http" type="request"/>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>request.queryparam.w</Name>
    <Ref>request.queryparam.w</Ref>
    <Value>12797282</Value>
  </AssignVariable>
</AssignMessage>

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

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

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

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

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

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

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

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

<AssignVariable ref='verifyapikey.myVerifyAPIKeyPolicy.app.name.message_template'/>

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Template>message_template</Template>
    or
    <Template ref='template_variable'></Template>
  </AssignVariable>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name='template-1'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name='template-2'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template ref='my_template_variable'/>

  </AssignVariable>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name='template-2'>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
  <AssignVariable>
    <Name>my_destination_variable</Name>
    <Value>BADDBEEF</Value>
    <Template ref='my_variable'>{system.uuid}-{messageid}</Template>
  </AssignVariable>
</AssignMessage>

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <AssignVariable>
    <Name>variable_name</Name>
    <Value>variable_value</Value>
  </AssignVariable>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="assignvariable-1">
  <AssignVariable>
    <Name>myvar</Name>
    <Value>42</Value>
  </AssignVariable>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="assignvariable-2">
  <AssignVariable>
    <Name>myvar</Name>
    <Ref>request.header.user-agent</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
  <AssignVariable>
    <Name>Country</Name>
    <Ref>request.queryparam.country</Ref>
    <Value>ErrorOnCopy</Value>
  </AssignVariable>
</AssignMessage>

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

<Copy>

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
    <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>[false|true]</Path>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>[false|true]</ReasonPhrase>
    <StatusCode>[false|true]</StatusCode>
    <Verb>[false|true]</Verb>
    <Version>[false|true]</Version>
  </Copy>
  <!-- Used as the destination for the <Copy> values -->
  <AssignTo createNew="[true|false]" transport="http"
    type="[request|response]">destination_variable_name</AssignTo>
</AssignMessage>
  

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="copy-1">
  <Copy source="request">
    <Headers>
      <Header name="Header_Name_1">Header value 1</Header>
    </Headers>
    <FormParams>
      <FormParam name="Form_Param_Name_1">Form param value 1</FormParam>
      <FormParam name="Form_Param_Name_2">Form param value 1</FormParam>
      <FormParam name="Form_Param_Name_3">Form param value 1</FormParam>
    </FormParams>
    <Payload>false</Payload>
    <Path>true</Path>
    <QueryParams/>
    <ReasonPhrase>false</ReasonPhrase>
    <StatusCode>false</StatusCode>
    <Verb>false</Verb>
    <Version>false</Version>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

<Copy> एलिमेंट में ये एट्रिब्यूट मौजूद हैं:

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

कॉपी का सोर्स ऑब्जेक्ट बताता है.

  • अगर source तय नहीं किया गया है, तो इसे सामान्य मैसेज माना जाता है. इसके लिए उदाहरण के लिए, अगर नीति अनुरोध फ़्लो में है, तो सोर्स डिफ़ॉल्ट रूप से request ऑब्जेक्ट. अगर नीति, रिस्पॉन्स फ़्लो में है, तो यह डिफ़ॉल्ट रूप से response ऑब्जेक्ट. अगर आप source को छोड़ देते हैं, तो आप का संदर्भ भी शामिल करें. उदाहरण के लिए, {request.header.user-agent} के तौर पर.
  • अगर सोर्स वैरिएबल को हल नहीं किया जा सकता या वह बिना मैसेज वाले टाइप में हल होता है, <Copy> ने जवाब नहीं दिया.
वैकल्पिक स्ट्रिंग

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-formparams-1">
  <Copy source="request">
    <FormParams>
      <FormParam name="paramName">Form param value 1</FormParam>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="copy-formparams-2">
  <Copy source="request">
    <FormParams/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="copy-formparams-3">
  <Copy source="request">
    <FormParams>
      <FormParam name="paramName1"/>
      <FormParam name="paramName2"/>
      <FormParam name="paramName3"/>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 4

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

<AssignMessage name="copy-formparams-4">
  <Copy source="request">
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Copy>
  <AssignTo createNew="true" 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 को इस पर सेट करता है &quot;application/x-www-form-urlencoded&quot; टारगेट की गई सेवा को मैसेज भेजने से पहले.

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-headers-1">
  <Copy source="request">
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="copy-headers-2">
  <Copy source="request">
    <Headers/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="copy-headers-3">
  <Copy source="request">
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Path>[false|true]</Path>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-path-1">
  <Copy source="request">
    <Path>true</Path>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Payload>[false|true]</Payload>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-payload-1">
  <Copy source="request">
    <Payload>true</Payload>
  </Copy>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-queryparams-1">
  <Copy source="request">
    <QueryParams>
      <QueryParam name="my_param"/>
    </QueryParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="copy-queryparams-2">
  <Copy source="request">
    <QueryParams/>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="copy-queryparams-3">
  <Copy source="request">
    <QueryParams>
      <QueryParam name="qp1"/>
      <QueryParam name="qp2"/>
      <QueryParam name="qp3.2"/>
    </QueryParams>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <ReasonPhrase>[false|true]</ReasonPhrase>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-reasonphrase-1">
  <Copy source="response">
    <ReasonPhrase>true</ReasonPhrase>
  </Copy>
  <AssignTo createNew="trie" transport="http" type="response">MyCustomResponse</AssignTo>
</AssignMessage>

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <StatusCode>[false|true]</StatusCode>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-statuscode-1">
  <Copy source="response">
    <StatusCode>true</StatusCode>
  </Copy>
  <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo>
</AssignMessage>

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

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

<StatusCode> का सामान्य इस्तेमाल यह पक्का करने के लिए किया जाता है कि प्रॉक्सी रिस्पॉन्स का स्टेटस एक जैसा हो <AssignTo> के createNew पर होने पर टारगेट से मिले रिस्पॉन्स के तौर पर विशेषता "सही" पर सेट है.

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Verb>[false|true]</Verb>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-verb-1">
  <Copy source="request">
    <Verb>true</Verb>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Copy source="[request|response]">
    <Version>[false|true]</Version>
  </Copy>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="copy-version-1">
  <Copy source="request">
    <Version>true</Version>
  </Copy>
  <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

<DisplayName>

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

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

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

<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> एलिमेंट में इस सिंटैक्स का इस्तेमाल किया जाता है:

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="ignoreunresolvedvariables">
  <Copy source="response">
    ...
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
  </Copy>
</AssignMessage>

<Remove>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Payload>[false|true]</Payload>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="remove-1">
  <DisplayName>remove-1</DisplayName>
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

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

उदाहरण 2

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

<AssignMessage continueOnError="false" enabled="true" name="remove-2">
  <Remove>
    <!-- Empty (<FormParams/>) removes all form parameters -->
    <FormParams/>
    <QueryParams>
      <QueryParam name="qp1"/>
    </QueryParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<FormParams/>) -->
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Remove>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="remove-formparams-1">
  <Remove>
    <FormParams>
      <FormParam name="form_param_1"/>
      <FormParam name="form_param_2"/>
      <FormParam name="form_param_3"/>
    </FormParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="remove-formparams-2">
  <Remove>
    <FormParams/>
  </Remove>
  <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="remove-formparams-3">
  <Remove>
    <FormParams>
      <FormParam name="f1"/>
      <FormParam name="f2"/>
      <FormParam name="f3.2"/>
    </FormParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/>
</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]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<Headers/>) -->
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Remove>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="remove-headers-1">
  <Remove>
    <Headers>
      <Header name="user-agent"/>
    </Headers>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="remove-headers-2">
  <Remove>
    <Headers/>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="remove-headers-3">
  <Remove>
    <Headers>
      <Header name="h1"/>
      <Header name="h2"/>
      <Header name="h3.2"/>
    </Headers>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <Payload>[false|true]</Payload>
  </Remove>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="remove-payload-1">
  <Remove>
    <Payload>true</Payload>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Remove>
    <!-- Can also be an empty array (<QueryParams/>) -->
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Remove>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="remove-queryparams-1">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
      </QueryParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="remove-queryparams-2">
  <Remove>
      <QueryParams/>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="remove-queryparams-3">
  <Remove>
      <QueryParams>
        <QueryParam name="qp1"/>
        <QueryParam name="qp2"/>
        <QueryParam name="qp3.2"/>
      </QueryParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

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

उदाहरण 4

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

<AssignMessage name="remove-query-param">
  <Remove>
    <QueryParams>
      <QueryParam name="apikey"/>
    </QueryParams>
  </Remove>
  <AssignTo createNew="false" transport="http" type="request"/>
</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]"
    name="policy_name" >
  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
    <Path>path</Path>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</AssignMessage>

उदाहरण 1

यहां दिए गए उदाहरण में, <Set> एलिमेंट दिखाया गया है:

<AssignMessage continueOnError="false" enabled="true" name="set-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
    <Headers>
        <Header name="user-agent">{request.header.user-agent}</Header>
    </Headers>
    <QueryParams>
      <QueryParam name="name">{request.header.name}</QueryParam>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
    <!-- <Verb>GET</Verb> -->
    <Payload contentType="text/plain">42</Payload>
    <Path/>
    <ReasonPhrase>Bad request</ReasonPhrase>
    <StatusCode>400</StatusCode>
    <Verb>POST</Verb>
    <Verb>{my_variable}</Verb>
    <Version>1.1</Version>
  </Set>
  <AssignTo createNew="false" transport="http" type="response"/>
</AssignMessage>

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <FormParams>
      <FormParam name="formparam_name">formparam_value</FormParam>
      ...
    </FormParams>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-formparams-1">
  <Set>
    <FormParams>
      <FormParam name="myparam">{request.header.myparam}</FormParam>
    </FormParams>
  </Set>
    <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo>
</AssignMessage>

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

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Headers>
      <Header name="header_name">header_value</Header>
      ...
    </Headers>
  </Set>
</AssignMessage>

उदाहरण 1

नीचे दिए गए उदाहरण में, user-agent हेडर को request.header.user-agent वैरिएबल:

<AssignMessage name="set-headers-1">
  <Set>
    <Headers>
      <Header name="user-agent">{request.header.user-agent}</Header>
    </Headers>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

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

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

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Payload contentType="content_type" variablePrefix="prefix"
        variableSuffix="suffix">new_payload</Payload>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-payload-1">
  <Set>
    <Payload contentType="text/plain">42</Payload>
  </Set>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="set-payload-2">
  <Set>
    <Payload contentType="application/json">
      {"name":"foo", "type":"bar"}
    </Payload>
  </Set>
</AssignMessage>

उदाहरण 3

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

<AssignMessage name="set-payload-3">
  <Set>
    <Payload contentType="application/json">
      {"name":"foo", "type":"{variable_name}"}
    </Payload>
  </Set>
</AssignMessage>

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

<AssignMessage name="set-payload-3b">
  <Set>
    <Payload contentType="application/json" variablePrefix="@" variableSuffix="#">
      {"name":"foo", "type":"@variable_name#"}
    </Payload>
  </Set>
</AssignMessage>

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

उदाहरण 4

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

नीचे दिए गए उदाहरण में पेलोड के हिस्से को वैरिएबल मान:

<AssignMessage name="set-payload-4">
  <Set>
    <Payload contentType="text/xml">
      <root>
        <e1>sunday</e1>
        <e2>funday</e2>
        <e3>{var1}</e3>
      </root>
    </Payload>
  </Set>
</AssignMessage>
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

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

अगर बताया गया है, तो contentType का मान Content-Type एचटीटीपी हेडर.

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <QueryParams>
      <QueryParam name="queryparam_name">queryparam_value</QueryParam>
      ...
    </QueryParams>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1">
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.header.address}</QueryParam>
    </QueryParams>
  </Set>
</AssignMessage>

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

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-reasonphrase-1">
  <Set>
    <ReasonPhrase>Bad medicine</ReasonPhrase>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="set-reasonphrase-2">
  <Set>
    <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <StatusCode>HTTP_status_code or {variable}</StatusCode>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-statuscode-1">
  <Set>
    <StatusCode>404</StatusCode>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

उदाहरण 2

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

<AssignMessage name="set-statuscode-2">
  <Set>
    <StatusCode>{calloutresponse.status.code}</StatusCode>
  </Set>
  <AssignTo createNew="true" transport="http" type="response"/>
</AssignMessage>

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-verb-1">
  <Set>
    <Verb>POST</Verb>
  </Set>
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

उदाहरण 2

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

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

<AssignMessage name="set-verb-2">
  <Set>
    <Verb>{my_variable}</Verb>
  </Set>
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

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

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

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

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

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

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

सिंटैक्स

<AssignMessage
    continueOnError="[false|true]"
    enabled="[true|false]"
    name="policy_name" >
  <Set>
    <Version>[1.0|1.1|{variable}]</Verb>
  </Set>
</AssignMessage>

उदाहरण 1

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

<AssignMessage name="set-version-1">
  <Set>
    <Version>1.1</Version>
  </Set>
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

उदाहरण 2

नीचे दी गई टेबल में कर्ली ब्रैकेट में वर्शन नंबर सेट करने के लिए वैरिएबल का इस्तेमाल होता है:

<AssignMessage name="set-version-2">
  <Set>
    <Version>{my_version}</Version>
  </Set>
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

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

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

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

पसंद के मुताबिक अनुरोध वाले मैसेज बनाएं

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

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

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

<AssignMessage name="assignto-2">
  <AssignTo createNew="true" transport="http" type="request"/>
</AssignMessage>

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

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

उदाहरण 1

इस उदाहरण में, 'मैसेज असाइन करें' के साथ कस्टम अनुरोध ऑब्जेक्ट बनाया गया है:

<AssignMessage name="AssignMessage-3">
  <AssignTo createNew="true" type="request">MyCustomRequest</AssignTo>
  <Copy>
    <Headers>
     <Header name="user-agent"/>
    </Headers>
  </Copy>
  <Set>
    <QueryParams>
      <QueryParam name="address">{request.queryparam.addy}</QueryParam>
    </QueryParams>
    <Verb>GET</Verb>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</AssignMessage>

यह उदाहरण:

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

उदाहरण 2

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

<AssignMessage name="AssignMessage-2">
  <AssignTo createNew="true" type="request">partner.request</AssignTo>
  <Set>
    <Verb>POST</Verb>
    <Payload contentType="text/xml">
      <request><operation>105</operation></request>
    </Payload>
  </Set>
</AssignMessage>

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

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

<AssignMessage name="custom-request-1-access">
  <DisplayName>custom-request-1-access</DisplayName>
  <AssignTo createNew="false" type="request"></AssignTo>
  <Set>
    <Headers>
      <Header name="user-agentCopyCustomRequest">{MyCustomRequest.header.user-agent}</Header>
    </Headers>
  </Set>
</AssignMessage>

वीडियो

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

वीडियो ब्यौरा
असाइन क्यों करें मैसेज की नीति? एपीआई अनुरोध में बदलाव करने के लिए,assignMessage नीति का इस्तेमाल करने के फ़ायदों के बारे में जानें या बैकएंड कोड में बदलाव किए बिना रिस्पॉन्स
एपीआई के एलिमेंट कॉपी करें 'असाइन मैसेज' नीति का इस्तेमाल करके किसी एपीआई अनुरोध या रिस्पॉन्स से एलिमेंट कॉपी करें और नया अनुरोध या रिस्पॉन्स तैयार करें असाइन करें.
एपीआई हटाएं वे एलिमेंट जो PendingMessage नीति का इस्तेमाल कर रहे हैं एपीआई एलिमेंट को हटाएं और एपीआई को, 'असाइन करें' मैसेज से जुड़ी नीति.
एपीआई जोड़ें और सेट करें वे एलिमेंट जो PendingMessage नीति का इस्तेमाल कर रहे हैं क्वेरी पैरामीटर, हेडर, फ़ॉर्म पैरामीटर जोड़कर या एपीआई अनुरोध या रिस्पॉन्स को बदलना असाइन करें.
पसंद के मुताबिक बनाएं PendingMessage नीति का इस्तेमाल करके वैरिएबल AssignmentsMessage नीति का इस्तेमाल करके, कस्टम फ़्लो वैरिएबल सेट करें और की अन्य नीतियों का पालन करता है.
नया बनाएं AskMessage नीति का इस्तेमाल करके, ऑब्जेक्ट का अनुरोध करना या जवाब देना एपीआई पर Tasks की नीति का इस्तेमाल करके, नया एपीआई अनुरोध या रिस्पॉन्स ऑब्जेक्ट बनाएं रनटाइम.
मॉक एपीआई बनाएं 'असाइन मैसेज' नीति का इस्तेमाल करके जवाब में,assignMessage नीति जोड़कर, एक आसान मॉक REST API बनाएं फ़्लो.
PendingMessage नीति का इस्तेमाल करके पेलोड ConsentMessage नीति का इस्तेमाल करके SOAP पेलोड सेट करके REST अनुरोध को SOAP अनुरोध में बदलें एपीआई रनटाइम पर नीति का पालन करें.

गड़बड़ी कोड

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

रनटाइम से जुड़ी गड़बड़ियां

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

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

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

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

steps.assignmessage.UnresolvedVariable 500

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

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

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

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

गड़बड़ी का नाम वजह ठीक करें
InvalidIndex अगर 'मैसेज असाइन करें' नीति के <Copy> और/या <Remove> एलिमेंट में तय किया गया इंडेक्स 0 या नेगेटिव संख्या है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता.
InvalidVariableName अगर चाइल्ड एलिमेंट <Name> खाली है या <AssignVariable> एलिमेंट में नहीं बताया गया है, तो एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता. ऐसा इसलिए, क्योंकि कोई मान्य वेरिएबल नाम नहीं है, जिसे वैल्यू असाइन की जा सके. वैरिएबल का नाम मान्य होना चाहिए.
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="VariableOfNonMsgType"></faultrule><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 पर उपलब्ध हैं.

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

काम कर रहे हैं PendingMessage नीति के सैंपल, एपीआई प्लैटफ़ॉर्म के सैंपल में उपलब्ध हैं.

target.url को ओवरराइड करने के तरीके के बेहतर उदाहरण के लिए, ProxyEndpoint, Apigee कम्यूनिटी का यह लेख देखें.

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