Mesaj İletisi politikası atayın

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Ne?

AttributionMessage politikası, API proxy Akışı sırasında yeni istek ve yanıt mesajlarını değiştirir veya oluşturur. Politika, bu iletiler üzerinde aşağıdaki işlemleri gerçekleştirmenize olanak tanır:

  • Bir iletiye yeni form parametreleri, üstbilgiler veya sorgu parametreleri ekleme
  • Mevcut özellikleri bir mesajdan diğerine kopyalama
  • Üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya iletiyi kaldırma mesajdaki yük
  • Bir mesajdaki mevcut özelliklerin değerini ayarlayın

Ataması politikasını kullanarak genellikle yanıt verebilmeniz için kritik önem taşır. Ancak, özel bir ve bunu, açıklandığı şekilde alternatif bir hedefe iletebilir. Özel istek mesajları oluşturun.

assignMessage politikası, akış değişkenlerini aşağıdaki alt öğe ile oluşturabilir veya değiştirebilir: öğeler:

<AssignMessage> öğe

Ataması politikası tanımlar.

Varsayılan Değer Aşağıdaki Varsayılan Politika sekmesine bakın
Zorunlu mu? Zorunlu
Tür Karmaşık nesne
Üst Öğe Yok
Alt Öğeler <Add>
<AssignTo>
<AssignVariable>
<Copy>
<DisplayName>
<IgnoreUnresolvedVariables>
<Remove>
<Set>

<AssignMessage> öğesi şu söz dizimini kullanır:

Söz dizimi

<AssignMessage> öğesi şu söz dizimini kullanır:

<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>

Varsayılan Politika

Aşağıdaki örnekte,assignMessage politikası eklediğinizde kullanılan varsayılan ayarlar gösterilmektedir olarak ayarlayın:

<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 kullanıcı arayüzüne yeni bir QueryMessage politikası eklediğinizde şablon, yapmanızı sağlayan sorular. Genellikle bu politikayla gerçekleştirmek istediğiniz işlemleri siz seçersiniz ve alt öğelerin geri kalanını kaldırın. Örneğin, bir kopyalama işlemi gerçekleştirmek istiyorsanız <Copy> öğesini seçin ve <Add>, <Remove> ve diğer alt öğeleri şuradan kaldırın: politikayı daha okunaklı hale getirmek için.

Bu öğe, tüm politikalarda ortak olan aşağıdaki özelliklere sahiptir:

Özellik Varsayılan Zorunlu mu? Açıklama
name Yok Zorunlu

Politikanın dahili adı. name özelliğinin değeri harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içerebilir. Bu değer 255 karakteri aşamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için <DisplayName> öğesini kullanın.

continueOnError yanlış İsteğe bağlı Politika başarısız olduğunda hata döndürmek için "false" değerine ayarlayın. Bu, çoğu politika için beklenen bir durumdur. Bir politika başarısız olsa bile akış yürütmenin devam etmesi için değeri "true" olarak ayarlayın.
enabled true İsteğe bağlı Politikayı uygulamak için "true" (doğru) değerine ayarlayın. Politikayı "kapalı" hale getirmek için "false" değerine ayarlayın. Politika, bir akışa bağlı kalsa bile zorunlu kılınmaz.
async   yanlış Kullanımdan kaldırıldı Bu özellik kullanımdan kaldırıldı.

Aşağıdaki tabloda, öğenin alt öğeleri için genel bir açıklama sunulmaktadır <AssignMessage>:

Alt Öğe Zorunlu mu? Açıklama
Genel işlemler
<Add> İsteğe bağlı <AssignTo> öğesi.

<Add>, orijinal iletide yer almayan iletiye üstbilgi veya parametreler ekler mesajını alırsınız. Mevcut üstbilgilerin veya parametrelerin üzerine yazmak için <Set> öğesini kullanın.

<Copy> İsteğe bağlı source tarafından belirtilen mesajdaki bilgileri kopyalar özelliğini <AssignTo> öğesi tarafından belirtilen mesaj nesnesine ekleyin.
<Remove> İsteğe bağlı Belirtilen öğeleri <AssignTo> öğesi.
<Set> İsteğe bağlı İstek veya yanıttaki mevcut özelliklerin, aşağıdaki şekilde belirtilen değerlerini değiştirir: <AssignTo> öğesi.

<Set>, orijinal sayfada zaten mevcut olan üstbilgilerin veya parametrelerin üzerine yazar mesajını alırsınız. Yeni üstbilgi veya parametreler eklemek için <Add> öğesini kullanın.

Diğer alt öğeler
<AssignTo> İsteğe bağlı Ataması politikasının hangi mesaj üzerinde çalışacağını belirtir. Bu, tüm standart istek veya yanıt olabileceği gibi yeni, özel bir mesaj da olabilir.
<AssignVariable> İsteğe bağlı Bir akış değişkenine değer atar. Değişken mevcut değilse <AssignVariable> oluşturur.
<IgnoreUnresolvedVariables> İsteğe bağlı Çözümlenmemiş bir değişkenle karşılaşıldığında işlemenin durup durmayacağını belirler.

Bu alt öğelerin her biri sonraki bölümlerde açıklanmıştır.

Örnekler

Aşağıdaki örneklerde,assignMessage politikasını hangi şekillerde kullanabileceğiniz gösterilmektedir politika:

1: Üstbilgi ekleme

Aşağıdaki örnek, isteğe <Add> öğesi:

<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: Yükü kaldırın

Aşağıdaki örnek, <Remove> içeren yanıttaki yükü siler öğe:

<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: Yanıtı değiştirin

Aşağıdaki örnek, başlık ekleyerek mevcut bir yanıt nesnesini değiştirir:

<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>

Bu örnek yeni bir mesaj oluşturmaz. Bunun yerine, HTTP üstbilgisi ekleyerek mevcut yanıt mesajını gönderin.

Çünkü bu örnekte <AssignTo> öğesinde bir değişken adı atlanmaktadır ve type ise bu politika, hedef tarafından döndürülen yanıt nesnesini değiştirir sunucu.

Bu politika tarafından yanıt mesajına eklenen HTTP üst bilgisi bir değişkenden türetiliyor LookupCache politikası tarafından doldurulur. Bu nedenle, bu İleti Ataması politikası, sonuçların doğru olup olmadığını belirten bir HTTP üstbilgisi içerir. otomatik olarak devre dışı bırakılır. Yanıtta başlıkları ayarlamak hata ayıklama açısından faydalı olabilir ve sorun giderme adımlarına göz atın.

4: Dinamik içeriği ayarlayın

Yanıt yüküne dinamik içeriği yerleştirmek ve mesaj iste.

Edge akış değişkenlerini bir XML yüküne yerleştirmek için belirtilen değişkeni kıvrık içine sarın kaşlı ayraçlar şöyle: {prefix.name}.

Aşağıdaki örnekte user-agent HTTP başlığı akış değişkeninin değeri yerleştirilmiştir User-agent adlı bir XML öğesinde:

<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 yükleri için variablePrefix ve Aşağıda gösterildiği gibi ayırıcı karakterlere sahip variableSuffix özellikleri örnek:

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

Akış değişkenlerinin tam listesi için Akış değişkenleri referansı bölümüne bakın.

16.08.17 bulut sürümünden itibaren değişken eklemek için süslü ayraçları da kullanabilirsiniz.

5: Sorgu parametresini kaldırma

Aşağıdaki örnek, apikey sorgu parametresini istekten kaldırır:

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

En iyi uygulama, apikey sorgu parametresini istekten çıkarmaktır iletisiyle karşılaşırsınız. Bu yöntemin kapsamdaki hassas anahtar bilgilerinin arka uç hedefine aktarılmasını engeller.

6: Değişkenleri ayarlayın/alın

Aşağıdaki örnekte üç İleti Ata politikası kullanılmaktadır:

  1. İstekte statik değerlerle üç akış değişkeni oluşturur
  2. Akış değişkenlerini, istek akışındaki ikinci bir politikada dinamik olarak alır
  3. Bunları yanıtın yüküne dahil eder
<!-- 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>

İlk politikada <AssignVariable> öğesi üç öğe oluşturur ve ayarlar değişkenlerinin değeri dahil edilir. Her <Name> öğesi <Value> ise değeri belirtir.

İkinci politika, değerleri okumak için <AssignVariable> öğesini kullanır ve üç tane oluşturur yeni değişkenler:

<!-- 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>

İkinci politikada <Ref> öğesi, kaynak değişkene referans verir. ve <Name> öğeleri yeni değişkenlerin adlarını belirtir. Değişken <Ref> öğesi tarafından referansa ulaşılamıyorsa değeri kullanabilirsiniz <Value> öğesi ile belirtilir.

Bu politika grubunu denemek için:

  1. 1. ve 2. politikaları istek akışına ekleyin. 1. politikayı politikanın önüne eklediğinizden emin olun 2.
  2. Üçüncü politikayı yanıt akışına ekleyin.
  3. Üçüncü politika, değişkenleri yanıta eklemek için <Set> öğesini kullanır. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnek, Edge'in istemciye döndürdüğü yanıtta bir XML yükü oluşturur:
    <!-- 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>'de akış değişkenlerine erişmek için kullanılan söz diziminin, akış değişkenlerini kıvrık ayraçlar.

    <Payload> öğesinin contentType özelliğini "uygulama/xml".

  4. API proxy'nize istek gönderme; örneğin:
    curl -vL https://ahamilton-eval-test.apigee.net/myproxy
    .

    İsteğe bağlı olarak, sonuçları xmllint gibi bir yardımcı program ile bağlayabilirsiniz. Böylece, XML güzel biçimlendirilmiş bir yapıda görüntülenir:

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

    Yanıt gövdesi aşağıdaki gibi görünmelidir:

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

7: Hizmet Çağrısı yanıt üstbilgilerini alma

Aşağıdaki örnekte, API proxy isteğinde bir ServiceÇağrı politikasının bulunduğunu varsayalım. ve açıklama metni yanıtı aynı ada sahip birden fazla başlık içeriyorsa (Set-Cookie). Hizmet Çağrısı'nın yanıt değişkeninin varsayılan olduğu varsayıldığında calloutResponse, aşağıdaki politika ikinci Set-Cookie başlık değeri.

<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>

Tüm üst bilgi değerlerini listelemek için aşağıdaki değişkeni kullanın:

{calloutResponse.header.Set-Cookie.values}

Bu referanstaki her alt öğenin ek örnekleri vardır. Daha fazla örnek için bkz. assignMessage örneği bulabilirsiniz.

Alt öğe referansı

Bu bölümde, <AssignMessage> alt öğeleri açıklanmaktadır.

<Add>

İstek veya yanıta, <AssignTo> ile belirtilen bilgi ekler öğesine dokunun.

<Add> öğesi, iletiye orijinal öğede bulunmayan yeni özellikler ekler. mesajını alırsınız. Mevcut özelliklerin değerlerini değiştirmek için <Set> kullanın öğesine dokunun.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Karmaşık tür
Üst Öğe <AssignMessage>
Alt Öğeler <FormParams>
<Headers>
<QueryParams>

<Add> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte,<FormParams> sorgu dizesi parametresini oluşturmak ve bunları hedef uç nokta isteği:

<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. Örnek

Aşağıdaki örnekte<Headers> Hedef uç nokta isteğine User-Agent üstbilgisi:

<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. Örnek

Aşağıdaki örnekte, tek bir sorgu eklemek için <QueryParams> öğesi kullanılmaktadır parametresini isteğe statik bir değerle ekler:

<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>

Bu örnekte, istek ön akışında <Add> kullanılmaktadır. Sonuçlara bir araçta bakarsanız örneğin, İzleme aracı, "http://httpbin.org/get" isteği şu olur: &quot;http://httpbin.org/get?myParam=42&quot;.

<Add> alt öğeleri, mesaj şablonu oluşturma.

<FormParams> (<Add> hesabının altında)

İstek mesajına yeni form parametreleri ekler. Bu öğenin yanıtlar üzerinde etkisi yok mesajını alırsınız.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğeleri dizisi
Üst Öğe <Add>
Alt Öğeler <FormParam>

<FormParams> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte, istek:

<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. Örnek

Aşağıdaki örnek, name sorgu dizesi parametresinin değerini alır ve bunu isteğe bir form parametresi olarak ekler:

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

Bu örneğin <AssignTo> ile bir hedef belirtmediğini unutmayın. Bu politika, parametresini kullanabilirsiniz.

3. Örnek

Aşağıdaki örnekte isteğe birden çok form parametresi eklenmiştir:

<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>

Bu örnek, kaynak istekten sorgu dizesi parametrelerini alır ve bunları ekler URL'yi, hedef uç noktaya gönderilen isteğe form parametreleri olarak ekler.

Akışa bakmak için İzleme aracını kullanabilirsiniz. İsteğin gövdesinin URL kodlamalı form verilerini içerir ve bu veriler başlangıçta sorgu dizesi olarak parametre:

%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en

<FormParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: POST
  • Mesaj türü: İstek
  • Aşağıdakilerden biri (veya her ikisi):
    • Form verisi: Bir değere veya "" değerine ayarlayın (boş dize). Örneğin, curl, isteğinize -d "" ekleyin.
    • Content-Length üstbilgisi: 0 olarak ayarlanır ( orijinal talep; aksi takdirde bayt cinsinden geçerli uzunluk) gösterilir. Örneğin, curl, isteğinize -H "Content-Length: 0" ekleyin.

Örneğin:

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

<FormParams> eklediğinizde Edge, isteğin Content-Type başlığını şuna ayarlar: &quot;application/x-www-form-urlencoded&quot; ve mesajı hedef hizmete göndermeden önce gönderilir.

<Headers> (<Add> hesabının altında)

Belirtilen istek veya yanıta, <AssignTo> öğesi.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğeleri dizisi
Üst Öğe <Add>
Alt Öğeler <Header>

<Headers> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte, istek mesajına user-agent başlığı eklenmiştir ve request.user.agent akış değişkeninin değerini bu başlığa atar.

<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> hesabının altında)

İsteğe yeni sorgu parametreleri ekler. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğeleri dizisi
Üst Öğe <Add>
Alt Öğeler <QueryParam>

<QueryParams> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte "myParam" sorgu parametresi eklenmiştir isteğe bağlı olarak ekler ve "42" ekleyin:

<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> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: GET
  • Mesaj türü: İstek

Buna ek olarak, sorgu parametrelerini yalnızca <AssignTo> öğesi type özelliği bir istek mesajıdır. Bunları yanıtta ayarlamanın herhangi bir etkisi yoktur.

Politikanızda boş bir sorgu parametreleri dizisi tanımlarsanız (<Add><QueryParams/></Add>) durumunda, politika herhangi bir sorgu eklemez parametreleridir. Bu, <QueryParams> öğesinin hariç tutulmasıyla aynıdır.

<AssignTo>

Ataması politikasının hangi nesne üzerinde çalıştığını belirler. Seçenekler şunlardır:

  • İstek mesajı: API proxy'si tarafından alınan request
  • Yanıt mesajı: Hedef sunucudan döndürülen response
  • Özel mesaj: Özel bir istek veya yanıt nesnesi

Bazı durumlarda QueryMessage politikasının etki ettiği nesneyi değiştiremeyeceğinizi unutmayın. Örneğin, sorgu parametreleri eklemek veya bunları değiştirmek için <Add> ya da <Set> kullanılamaz (<QueryParams>) veya form parametreleri (<FormParams>) oluşturun. Yalnızca istekteki sorgu parametrelerini ve form parametrelerini değiştirme.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <AssignMessage>
Alt Öğeler Yok

<AssignTo> özelliğini belirtmezseniz politika varsayılan istek veya yanıta göre uygulanır. (politikanın nerede geçerli olduğuna bağlı olarak) Politika, istek akışında uygulanırsa istek mesajını etkiler. Politika yanıt akışında uygulanırsa yanıtı etkiler varsayılan olarak.

<AssignTo> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte, hedefin hedef uç nokta:

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

createNew değerini "false" olarak ayarlayarak (varsayılan) sağlar, bu örnek bir yeni bir istek. Bu politikadaki tüm işlemler orijinal isteği etkiler.

2. Örnek

Aşağıdaki örnekte yeni bir istek nesnesi oluşturulur:

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

Yeni bir istek veya yanıt nesnesi oluşturduğunuzda QueryMessage politikasının diğer öğeleri politikası (ör. <Add>, <Set> ve <Set>) bu yeni istek nesnesini oluşturur.

Yeni istek nesnesine akışın ilerleyen bölümlerinde diğer politikalarda erişebilir veya yeni istek nesnesini ServiceÇağrı politikası ile harici bir hizmete istek nesnesi gönderme.

3. Örnek

Aşağıdaki örnekte "MyRequestObject" adlı yeni bir istek nesnesi oluşturulur:

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

Yeni bir istek veya yanıt nesnesi oluşturduğunuzda QueryMessage politikasının diğer öğeleri politikası (ör. <Add>, <Set> ve <Set>) bu yeni istek nesnesini oluşturur.

Yeni istek nesnesine akışın ilerleyen bölümlerinde diğer politikalarda erişebilir veya yeni istek nesnesini ServiceÇağrı politikası ile harici bir hizmete istek nesnesi gönderme.

Aşağıdaki tabloda <AssignTo> özellikleri açıklanmaktadır:

Özellik Açıklama Zorunlu mu? Tür
createNew

Bu politikanın değer atarken yeni bir mesaj oluşturup oluşturmayacağını belirler.

Politika "true" (doğru) değerine ayarlanırsa politika şu türde yeni bir değişken oluşturur: type tarafından belirtilir ("istek" veya "yanıt"). Şu durumda: yeni değişkenin adını belirtmezseniz politika yeni bir istek oluşturur veya type değerine dayalı olarak yanıt nesnesi.

Politika, "false" (yanlış) değerine ayarlandığında şu iki yöntemden biriyle yanıt verir:

  • <AssignTo>, değişken adını bir istek veya yanıt olarak çözümleyebilirse işlenmeye devam eder. Örneğin, politika bir istek akışındaysa değişken istek nesnesini oluşturur. Politika bir yanıtta yer alıyorsa değişken yanıt nesnesini tanımlayın.
  • <AssignTo> çözümlenemezse veya mesaj olmayan bir türe çözümlenirse bir hata verir.

createNew belirtilmezse politika iki yöntemden biriyle yanıt verir:

  • <AssignTo> bir mesajı çözerse işleme adımına geçelim.
  • <AssignTo> çözümlenemezse veya mesaj olmayan bir türe çözümlenirse yeni bir type içinde belirtilen türdeki değişken oluşturuldu.
İsteğe bağlı Boole
transport

İstek veya yanıt mesajı türü için aktarım türünü belirtir.

Varsayılan değer "http" şeklindedir. (desteklenen tek değer).

İsteğe bağlı Dize
type createNew "true" (doğru) olduğunda yeni mesajın türünü belirtir. Geçerli değerler "request"dir veya "yanıt".

Varsayılan değer "request"dir. Bu özelliği hariç tutarsanız Edge bu politikanın akışın neresinde yürütüldüğüne bağlı olarak bir istek veya yanıt.

İsteğe bağlı Dize

<AssignVariable>

Bir hedef akış değişkenine (ör. değeri AttributionMessage politikası). Akış değişkeni mevcut değilse <AssignVariable>, somut olarak ortaya koyar.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Karmaşık tür
Üst Öğe <AssignMessage>
Alt Öğeler <Name> (zorunlu)
<Ref>
<Template>
<Value>

Hedef akış değişkenine atadığınız değer aşağıdakilerden biri olabilir:

  • Değişmez dize: Değişmez değer belirtmek için <Value> alt öğesini kullanın dize değerini girin.
  • Akış değişkeni: Bir<Ref> için mevcut akış değişkenini seçtiğinizden emin olun. Akışın tam listesi için değişkenlerine ilişkin referanslar için Akış değişkenleri referansı bölümüne bakın.
  • İleti şablonu: Etiket belirtmek için <Template> alt öğesini kullanın ileti şablonunu hedef akış değişkeni.

<AssignVariable> öğesi şu söz dizimini kullanır:

Söz dizimi

<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>

Kaynak değişkeni belirtmek için <Ref> öğesini kullanın. Öğe <Ref> tarafından referansta bulunulan değişkene erişilemiyor. Edge, <Value> öğesi tarafından belirtilir. Hedef kitlenizi <Template> için diğer alt öğelere göre önceliklidir.

1. Örnek

Aşağıdaki örnekte myvar adlı yeni değişkenin değeri sabit değer olarak ayarlanmaktadır. "42" değeri:

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

2. Örnek

Aşağıdaki örnekte, akış değişkeninin değeri myvar hedef akış değişkenine request.header.user-agent ve hedef akış değişkenine country sorgu parametresinin değeri 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>

İki atama da başarısız olursa Edge bunun yerine "ErrorOnCopy" değerini atar - hedef akış değişkeninin değeridir.

myvar veya Country akış değişkenleri mevcut değilse <AssignVariable> bunları oluşturur.

3. Örnek

Aşağıdaki örnekte <Template> kullanılmaktadır iki bağlam değişkenini birleştiren alt öğe bir dize (kısa çizgi) ekler:

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

<AssignVariable> için yaygın bir kullanım biçimi, bir sorgu parametresi, başlık veya istekle birlikte iletilebilecek diğer değeri tanımlar. Bunu, hem <Ref> ve <Value> alt öğeleri. Daha fazla <Ref> ile ilgili örneklere bakın.

<Name> (<AssignVariable> hesabının altında)

Hedef akış değişkeninin (ör. değeri özel atama politikası). <AssignVariable> içinde adlı değişken mevcut değilse politikası bu ada sahip bir etiket oluşturur.

Varsayılan Değer Yok
Zorunlu mu? Zorunlu
Tür Dize
Üst Öğe <AssignVariable>
Alt Öğeler Yok

<Name> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnek, hedef değişkenini myvar olarak belirtir ve değer "42" olsun:

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

myvar yoksa <AssignVariable> tarafından oluşturulur.

<Ref> (<AssignVariable> hesabının altında)

Atamanın kaynağını akış değişkeni olarak belirtir. Akış değişkeni önceden tanımlanmış akış değişkenleri (Akış değişkenleri referansında listelenen şekliyle) veya özel akış değişkeni öğrenebilirsiniz.

<Ref> değeri her zaman bir akış değişkeni olarak yorumlanır; şunu yapamaz: değer. Değişmez dize değeri atamak için <Value> öğesini kullanın .

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <AssignVariable>
Alt Öğeler Yok

<Ref> ile bir akış değişkeni belirtirken "{}" şeklinde ayraçlar normal koşullarda akış değişkenine Örneğin, yeni değişkeninizin değerini client.host akışının değerine ayarlayın değişken:

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

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

Hedef akış değişkeni için varsayılan bir değer tanımlamak üzere <Value> değerini kullanın <Ref> ile birlikte. Akış değişkeni <Ref> mevcut değil, okunamıyor veya boşsa Edge bu değeri atar değerini hedef akış değişkenine ekleyin.<Value>

<Ref> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte, akış değişkeninin değeri myvar hedef akış değişkenine request.header.user-agent ve Country değişkenine country sorgu parametresinin değeri:

<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>

Bu örnekte, Edge'in atama.

2. Örnek

Aşağıdaki örnekte request.header.user-agent akış değişkeninin değeri atanır değerini hedef akış değişkenine myvar Country değişkenine country sorgu parametresi eklemek için:

<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>

Bu örnekte, request.header.user-agent akış değişkeninin değerleri veya Country sorgu parametresi null, okunamaz veya bozuksa Edge atanır. "ErrorOnCopy" değeri kullanabilirsiniz.

3. Örnek

<AssignVariable> için yaygın bir kullanım alanı, sorgunun varsayılan değerini ayarlamaktır. parametre, başlık veya istekle birlikte iletilebilecek başka bir değer bulunur. Örneğin, isteğin "w" adlı tek bir sorgu parametresi aldığı bir hava durumu API proxy'si. Bu parametresi, hava durumunu öğrenmek istediğiniz şehrin kimliğini içerir. İstek URL'sinde şu formu kullanın:

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

"w" için varsayılan bir değer tanımlamak üzere şuna benzer bir AtaMessage politikası oluşturun: takip etmek için:

<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>

Bu örnekte <AssignVariable>, request.queryparam.w değerini alır ve bunu kendisine atar. Akış değişkeni null ise, yani "w" sorgu parametresi (önceki değeri) değeri atlanırsa bu örnekte, <Value> öğesi. Bu nedenle, bu API'ye istekte bulunabilirsiniz. "w" harfini atlayan proxy sorgu parametresi:

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

...ve API proxy'sinin geçerli bir sonuç döndürmesini sağlayabilirsiniz.

<Value> kullanımından farklı olarak, <Ref> değeri bir olmalıdır akış değişkeni, örneğin bir request, response veya target nesnesini tanımlayın. Değer, oluşturduğunuz bir özel akış değişkeni de olabilir.

<Ref> değeri için mevcut olmayan bir akış değişkeni belirtirseniz ve <IgnoreUnresolvedVariables> değeri "true" olduğunda Edge bir hata gönderir.

<Template> (<AssignVariable> hesabının altında)

Bir mesaj şablonu. Mesaj şablonu, politika yürütüldüğünde değişken dizesi değişikliği yapmanıza olanak tanır ve düz dizeleri kıvrık içine alınmış değişken adlarıyla birleştirebilir ayraçlar. Ayrıca, mesaj şablonları destek (çıkış ve büyük/küçük harf dönüştürme gibi) işlevlerini kullanabilirsiniz.

Değişkenin değerinin mevcut olduğu bir akış değişkenini belirtmek için ref özelliğini kullanın. bir mesaj şablonudur. Örneğin, bir ileti şablonunu özel özellik ekleyebilirsiniz. Edge, API anahtarını doğruladıktan sonra geliştirici uygulamasını tanımladığında veya güvenlik jetonu (ek politika ile) kullanılarak, <AssignVariable> öğesi, uygulamanın Google Ads'e aktaran olarak değiştirilir. Aşağıdaki örnekte, şablonu, feed'deki message_template adlı bir müşteri özelliğinde Doğrulama için VerifyAPIKey politikasının kullanıldığı API çağrısı yapan geliştirici uygulaması Uygulamanın API anahtarı:

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

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <AssignVariable>
Alt Öğeler Yok

<Template> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte iki bağlam değişkenini birleştirmek için mesaj şablonu söz dizimi kullanılmaktadır bir dize (kısa çizgi) ekler:

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

2. Örnek

Aşağıdaki örnekte bir akış değişkeni belirtilmektedir; burada değişkenin değeri önceden tanımlanmış bir mesaj şablonudur. URL'ye önceden tanımlanmış bir şablon eklemek isterseniz bu seçeneği kullanın çalışma zamanı ayarlayabilirsiniz.

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

  </AssignVariable>
</AssignMessage>

3. Örnek

Aşağıdaki örnekte bir akış değişkeni ve metin değeri belirtilmektedir. Bu durumda, başvurulan değişken boş değildir; bu değer şablon olarak kullanılır. Referans verilen değer boş ise metin değeri (bu örnekte {system.uuid}-{messageid}) öğesi şablon olarak kullanılır. Bu kalıp, "geçersiz kılma" sağlamak için yararlıdır değer, burada: Bazı durumlarda varsayılan şablonu (metin bölümü) farklı değerlerle değiştirmek isteyebilirsiniz bu yöntemi kullanabilirsiniz. Örneğin, bir koşullu ifadenin oluşturun ve başvurulan değişkeni bu değere ayarlayın:

<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> hesabının altında)

<AssignVariable> ile ayarlanan hedef akış değişkeninin değerini tanımlar. İlgili içeriği oluşturmak için kullanılan değer her zaman düz bir dize olarak yorumlanır; değer olarak bir akış değişkeni kullanamazsınız, değeri parantez içine alırsanız ("{}"). Akış değişkeni kullanmak için <Ref> değerini kullanın .

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <AssignVariable>
Alt Öğeler Yok

<Ref> öğesiyle birlikte kullanıldığında <Value> varsayılan (veya yedek) değer olarak işlev görür. <Ref> belirtilmezse çözümlenemez ya da null ise <Value> değeri kullanılır.

<Value> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte hedef akış değişkeninin değeri myvar değer "42" olsun:

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

2. Örnek

Aşağıdaki örnekte, akış değişkeninin değeri myvar akış değişkenine ve değerine request.header.user-agent Country değişkenine country sorgu parametresi eklemek için:

<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>

İki atama da başarısız olursa <AssignVariable> bunun yerine "ErrorOnCopy" değerini atar - hedef akış değişkeninin değeridir.

<Copy>

source özelliği tarafından belirtilen mesajdaki değerleri kopyalar To <AssignTo> öğesi tarafından belirtilen mesaja eklenir. Belirli bir <AssignTo> öğesini içeren bir hedef içeriyorsa bu politika, değerleri isteğe veya yanıta kopyalarsa bu politikanın akışın neresinde yürütüldüğüne bağlıdır.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <AssignMessage>
Alt Öğeler <FormParams>
<Headers>
<Path>
<Payload>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

<Copy> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte bir üstbilgi, üç form parametresi, yol ve tüm sorgu, yeni, özel bir isteğe geçirmek için istekte bulunan parametreleri içerir:

<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> öğesi aşağıdaki özelliklere sahiptir:

Özellik Açıklama Zorunlu mu? Tür
source

Kopyanın kaynak nesnesini belirtir.

  • source belirtilmezse basit bir ileti olarak değerlendirilir. Örneğin, Örneğin, politika istek akışındaysa kaynak varsayılan olarak request nesne algılandı. Politika, yanıt akışındaysa varsayılan olarak response nesne algılandı. source değerini hariç tutarsanız mutlak bir değer kullanabilirsiniz kopyanın kaynağı olarak bir akış değişkenine referansta bulunur. Örneğin, {request.header.user-agent} olarak.
  • Kaynak değişken çözümlenemezse veya mesaj olmayan bir türe dönüşürse <Copy> yanıt veremiyor.
İsteğe bağlı Dize

<FormParams> (<Copy> hesabının altında)

<Copy> öğenin source özelliği to istek <AssignTo> öğesiyle belirtilir. Bu öğenin, tıklayın.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğeleri dizisi veya boş bir dizi
Üst Öğe <Copy>
Alt Öğeler <FormParam>

<FormParams> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte, istekten "MyCustomRequest" özel isteği:

<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. Örnek

Aşağıdaki örnekte, tüm form parametreleri özel isteğe kopyalanır &quot;MyCustomRequest&quot;:

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

3. Örnek

Aşağıdaki örnekte, özel isteğe üç form parametresi kopyalanır &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. Örnek

Aynı ada sahip birden fazla form parametresi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnekte "f1", "f2" ve ikinci "f3" değeri kopyalanır. "f3" ise yalnızca bir tane var değeri kopyalanmazsa kopyalanmaz.

<FormParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: POST
  • Mesaj türü: Yanıt
  • Aşağıdakilerden biri (veya her ikisi):
    • Form verisi: Bir değere veya "" değerine ayarlayın (boş dize). Örneğin, curl, isteğinize -d "" ekleyin.
    • Content-Length üstbilgisi: 0 olarak ayarlanır ( orijinal talep; aksi takdirde geçerli uzunluk. Örneğin, curl, isteğinize -H "Content-Length: 0" ekleyin.

<FormParams> öğesini kopyaladığınızda <Copy>, iletinin Content-Type ayarını şu şekilde ayarlar: &quot;application/x-www-form-urlencoded&quot; ve mesajı hedef hizmete göndermeden önce gönderilir.

<Headers> (<Copy> hesabının altında)

HTTP üst bilgilerini <Copy> öğesinin source özelliği iste veya <AssignTo> öğesi ile belirtilen yanıt mesajından yararlanın.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğeleri dizisi veya boş bir dizi
Üst Öğe <Copy>
Alt Öğeler <Header>

<Headers> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte, istekten user-agent üstbilgisine kopyalanan yeni, özel istek nesnesi:

<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. Örnek

Tüm üst bilgileri kopyalamak için aşağıdaki örnekte gösterildiği gibi boş bir <Headers> öğesi kullanın gösterir:

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

3. Örnek

Aynı ada sahip birden fazla üstbilgi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnekte "h1", "h2" ve ikinci "h3" değeri kopyalanır. "h3" ise yalnızca bir tane var değeri kopyalanmazsa kopyalanmaz.

<Path> (<Copy> hesabının altında)

Yolun kaynak istekten hedefe kopyalanıp kopyalanmayacağını belirler isteğinde bulunabilirsiniz. Bu öğenin yanıtlar üzerinde etkisi yoktur.

"true" (doğru) değerine ayarlanırsa bu politika, yolu <Copy> öğesinin source özelliği talebe <AssignTo> öğesi ile belirtilen mesajdır.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<Path> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte,assignMessage politikasının yolu kaynaktan kopyalaması gerektiği belirtilmektedir yeni, özel istek nesnesine istekte bulunun:

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

<Path> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek

<Payload> (<Copy> hesabının altında)

Yükün kaynaktan hedefe kopyalanıp kopyalanmayacağını belirler. Kaynak ve hedef, istekler ya da yanıtlar olabilir.

Politika "true" (doğru) değerine ayarlanırsa bu politika yükü <Copy> öğesinin source özelliği iletiyle <AssignTo> öğesiyle belirtilir.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<Payload> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <Payload> değeri "true" olarak ayarlanmaktadır. Böylece istek yükü İstekten yanıta kopyalanan kopya:

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

<QueryParams> (<Copy> hesabının altında)

Sorgu dizesi parametrelerini <Copy> öğesinin source özelliği, belirtilen istek için <AssignTo> öğesine dokunun. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğeleri dizisi veya boş bir dizi
Üst Öğe <QueryParam>
Alt Öğeler Yok

<QueryParams> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte "my_param" kopyalanır sorgu parametresini istekten yeni bir özel istek nesnesi:

<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. Örnek

Aşağıdaki örnekte, istekteki tüm sorgu parametreleri yeni, özel bir istek nesnesi:

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

3. Örnek

Aynı ada sahip birden fazla sorgu parametresi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnekte "qp1", "qp2" ve ikinci "qp3" değeri kopyalanır. "qp3" ise sadece değeri tek bir değerse kopyalanmaz.

<QueryParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: GET
  • Mesaj türü: İstek

<ReasonPhrase> (<Copy> hesabının altında)

Kelime öbeğinin yanıt verir. Bu öğenin istek üzerinde hiçbir etkisi yoktur.

"true" (doğru) değerine ayarlanırsa bu politika, ReasonPhrase öğesini yanıttan kopyalar <Copy> öğesinin source özelliği tarafından yanıt için belirtilir <AssignTo> öğesi tarafından belirtilir.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<ReasonPhrase> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <ReasonPhrase> değeri "true" olarak ayarlanarak <Copy> neden olur (varsayılan yanıttaki neden ifadesini özel yanıt nesnesine kopyalamak için):

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

<ReasonPhrase> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: Yanıt

<StatusCode> (<Copy> hesabının altında)

Durum kodunun kaynak yanıttan hedefe kopyalanıp kopyalanmadığını belirler tıklayın. Bu öğenin istek üzerinde hiçbir etkisi yoktur.

Politika "true" (doğru) değerine ayarlanırsa bu politika, durum kodunu <Copy> öğesinin source özelliği yanıtla <AssignTo> öğesi ile belirtilen mesajdır.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<StatusCode> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <StatusCode> değeri "true" olarak ayarlanarak durum kodu kopyalanır yeni, özel yanıt nesnesine ekleyin:

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

<StatusCode> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: Yanıt

<StatusCode> için yaygın bir kullanım, proxy yanıtının aynı duruma sahip olmasını sağlamaktır. <AssignTo> createNew olduğunda hedeften alınan yanıt olarak özelliğinin değeri "true" olarak ayarlanmıştır.

<Verb> (<Copy> hesabının altında)

HTTP fiilinin kaynak istekten hedefe kopyalanıp kopyalanmadığını belirler isteğinde bulunabilirsiniz. Bu öğenin yanıtlar üzerinde etkisi yoktur.

"true" (doğru) değerine ayarlanırsa <Copy> öğesinin source özelliğinde bulunan fiil kopyalanır <AssignTo> öğesinde belirtilen isteğe uyar.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<Verb> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <Verb>, "true" (doğru) değerine ayarlanarak yeni, özel bir isteğe varsayılan istek:

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

<Verb> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek

<Version> (<Copy> hesabının altında)

HTTP sürümünün kaynak istekten hedef isteğidir. Bu öğenin yanıtlar üzerinde etkisi yoktur.

"true" (doğru) değerine ayarlanırsa <Copy> öğesinin source özelliğinde bulunan HTTP sürümünü kopyalar öğesi ile belirtilen nesneye <AssignTo> ekleyin.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Copy>
Alt Öğeler Yok

<Version> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <Version> değeri "true" olarak ayarlanmaktadır. bu da isteğe bağlı olarak sürümünü varsayılan istek nesnesinden yeni, özel bir istek nesnesine dönüştürün:

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

<Version> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek

<DisplayName>

Politikayı name özelliğine ek olarak farklı, daha doğal bir ada sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName> öğesi tüm politikalarda ortaktır.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı. <DisplayName> değerini çıkarırsanız politikanın name özelliği kullanılıyor
Tür Dize
Üst Öğe &lt;PolicyElement&gt;
Alt Öğeler Yok

<DisplayName> öğesi şu söz dizimini kullanır:

Söz dizimi

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

Örnek

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

<DisplayName> öğesinin özelliği veya alt öğesi yok.

<IgnoreUnresolvedVariables>

Çözümlenmemiş bir değişkenle karşılaşıldığında işlemenin durup durmayacağını belirler.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <AssignMessage>
Alt Öğeler Yok

Çözümlenmemiş değişkenleri yoksayıp işlemeye devam etmek için true olarak ayarlayın; aksi takdirde false. Varsayılan değer false değeridir.

<IgnoreUnresolvedVariables> öğesinin true olarak ayarlanması, <AssignMessage>'in continueOnError - true alma ve değişkenlerin değerlerini belirleme. continueOnError öğesini şuna ayarlarsanız: true ve ardından Edge, yalnızca kullanılırken karşılaşılan hataları değil, tüm hataları yoksayar değişkenlerine karşılık gelir.

<IgnoreUnresolvedVariables> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <IgnoreUnresolvedVariables> değeri "true" olarak ayarlanmaktadır:

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

<Remove>

Üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya ileti yükünü mesaj gönderebilirsiniz. Mesaj, bir istek veya yanıt olabilir. <Remove> mesajını siz belirtebilirsiniz <AssignTo> öğesini kullanarak ona göre hareket eder.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Karmaşık tür
Üst Öğe <AssignMessage>
Alt Öğeler <FormParams>
<Headers>
<Payload>
<QueryParams>

<Remove> için yaygın bir kullanım alanı, hassas kod içeren bir sorgu parametresini silmektir. arka uç sunucusuna iletmekten kaçınmak için gelen istek nesnesindeki bilgileri hariç tutmanızı sağlar.

<Remove> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnek, iletinin gövdesini yanıttan kaldırır:

<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>

Yanıt akışında bu politika yanıtın gövdesini kaldırıp yalnızca HTTP değerini döndürür üstbilgiyi müşteriye gönderebilirsiniz.

2. Örnek

Aşağıdaki örnek, gelen istek:

<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> hesabının altında)

Belirtilen form parametrelerini istekten kaldırır. Bu öğenin, tıklayın.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğeleri dizisi veya boş bir dizi
Üst Öğe <Remove>
Alt Öğeler <FormParam>

<FormParams> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnek, istekten üç form parametresini kaldırır:

<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. Örnek

Aşağıdaki örnek, istekteki tüm form parametrelerini kaldırır:

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

3. Örnek

Aynı ada sahip birden fazla form parametresi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnekte "f1", "f2" ve ikinci "f3" değeri kaldırılmıştır. "f3" ise yalnızca bir tane var değerine ayarlanırsa kaldırılmaz.

<FormParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek
  • Content-Type: "application/x-www-form-urlcoding"

<Headers> (<Remove> hesabının altında)

Belirtilen HTTP başlıklarını istekten veya yanıttan kaldırır. Bu istek veya yanıt <AssignTo> öğesi.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğeleri dizisi veya boş bir dizi
Üst Öğe <Remove>
Alt Öğeler <Header>

<Headers> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnek, user-agent üstbilgisini istekten kaldırır:

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

2. Örnek

Aşağıdaki örnek, istekten tüm üstbilgileri kaldırır:

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

3. Örnek

Aynı ada sahip birden fazla üstbilgi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnek "h1", "h2" ve ikinci "h3" değerini kaldırır . "h3" ise tek bir değere sahipse bu değer kaldırılmaz.

<Payload> (<Remove> hesabının altında)

<Remove> öğesinin, istek veya yanıttaki yükü silip silmeyeceğini belirler. <AssignTo> öğesi tarafından belirtilir. "true" (doğru) olarak ayarlayın - Yükü temizleyin; Aksi takdirde "false" olur. Varsayılan değer "false" (yanlış) değeridir.

Varsayılan Değer Yanlış
Zorunlu mu? İsteğe bağlı
Tür Boole
Üst Öğe <Remove>
Alt Öğeler Yok

<Payload> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte <Payload> değeri "true" olarak ayarlanmaktadır. Böylece istek yükü temizlendi:

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

<QueryParams> (<Remove> hesabının altında)

Belirtilen sorgu parametrelerini istekten kaldırır. Bu öğenin, tıklayın.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğeleri dizisi veya boş bir dizi
Üst Öğe <Remove>
Alt Öğeler <QueryParam>

<QueryParams> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnek, istekten tek bir sorgu parametresini kaldırır:

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

2. Örnek

Aşağıdaki örnek, istekteki tüm sorgu parametrelerini kaldırır:

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

3. Örnek

Aynı ada sahip birden fazla sorgu parametresi varsa aşağıdaki söz dizimini kullanın:

<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>

Bu örnek "qp1", "qp2" ve "qp3"ün ikinci değerini kaldırır . Eğer "qp3" tek bir değere sahipse bu değer kaldırılmaz.

4. Örnek

Aşağıdaki örnek, apikey sorgu parametresini istekten kaldırır:

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

<QueryParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: GET
  • Mesaj türü: İstek

<Set>

İstek veya yanıt mesajındaki <AssignTo> öğesi. <Set>, başlıkların üzerine yazar veya parametrelerine dikkat edin. Yeni bir başlık veya parametre oluşturmak için <Add> öğesini kullanın.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Karmaşık tür
Üst Öğe <AssignMessage>
Alt Öğeler <FormParams>
<Headers>
<Payload>
<Path>
<QueryParams>
<ReasonPhrase>
<StatusCode>
<Verb>
<Version>

<Set> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte <Set> öğesi gösterilmektedir:

<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> hesabının altında)

Bir istekteki mevcut form parametrelerinin üzerine yazar ve bunları istediğiniz yeni değerlerle değiştirir belirtir. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğeleri dizisi
Üst Öğe <Set>
Alt Öğeler <FormParam>

<FormParams> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte "myparam" adlı bir form parametresi ayarlanıyor ve Yeni, özel bir istekte request.header.myparam değişken:

<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> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: POST
  • Mesaj türü: İstek

Politikanızda boş form parametreleri tanımlarsanız (<Add><FormParams/></Add>), politika hiçbir form eklemez parametreleridir. Bu, <FormParams> öğesinin atlanmasıyla aynıdır.

<Set>, mesajın Content-Type değerini şu şekilde değiştirir: &quot;application/x-www-form-urlencoded&quot; .

<Headers> (<Set> hesabının altında)

İstek veya yanıttaki <AssignTo> öğesi.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğeleri dizisi
Üst Öğe <Set>
Alt Öğeler <Header>

<Headers> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte user-agent üstbilgisi, request.header.user-agent değişkeni:

<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>

Politikanızda boş başlıklar tanımlarsanız (<Add><Headers/></Add>) ayarlanırsa politika herhangi bir başlık eklemez. Bu <Headers> değerinin atlanmasıyla aynıdır.

<Path> (<Set> hesabının altında)

.

<Payload> (<Set> hesabının altında)

Bir istek veya yanıt için ileti gövdesini tanımlar. Bu konu <AssignTo> öğesi. Yük, düz gibi geçerli herhangi bir içerik türü olabilir. metin, JSON veya XML.

Varsayılan Değer boş dize
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <Set>
Alt Öğeler Yok

<Payload> öğesi şu söz dizimini kullanır:

Söz dizimi

<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. Örnek

Aşağıdaki örnekte bir düz metin yükü ayarlanmaktadır:

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

2. Örnek

Aşağıdaki örnekte bir JSON yükü ayarlanmaktadır:

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

3. Örnek

Aşağıdaki örnekte değişken adlarını sarmalayarak yüke değişken değerleri eklenmiştir küme ayraçları içinde:

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

Apigee Edge'in eski sürümlerinde (örneğin, 16.08.17 bulut sürümünden önce) şunu yapabilirsiniz: JSON yüklerindeki değişken referansları belirtmek için küme parantezleri kullanmamalıdır. Bu sürümlerde, variablePrefix ve variableSuffix özelliklerinin kullanılması gereken ayırıcı karakterler belirtin ve bunları aşağıdaki gibi değişken adlarını sarmalamak için kullanın:

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

Bu eski söz dizimi hâlâ çalışmaktadır.

4. Örnek

<Payload> içeriğinin içeriği ileti şablonu olarak değerlendirilir. Bu, AttributionMessage politikası, küme ayraçları içine alınmış değişkenleri referanslı değişkenlerden ibarettir.

Aşağıdaki örnekte, yükün bir kısmını değişken değeri:

<AssignMessage name="set-payload-4">
  <Set>
    <Payload contentType="text/xml">
      <root>
        <e1>sunday</e1>
        <e2>funday</e2>
        <e3>{var1}</e3>
      </root>
    </Payload>
  </Set>
</AssignMessage>
.

Aşağıdaki tabloda <Payload> özellikleri açıklanmaktadır:

Özellik Açıklama Varlık Tür
contentType

Belirtilirse contentType değeri Content-Type HTTP üst bilgisi.

İsteğe bağlı Dize
variablePrefix İsteğe bağlı olarak, bir akış değişkeninde baştaki sınırlayıcıyı belirtir. Varsayılan olarak "{" değerine ayarlanır. Örneğin, Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın. İsteğe bağlı Char
variableSuffix İsteğe bağlı olarak, bir akış değişkeninde sondaki sınırlayıcıyı belirtir. Varsayılan olarak "}" değerine ayarlanır. Örneğin, Daha fazla bilgi için Akış değişkenleri referansı bölümüne bakın. İsteğe bağlı Char

<QueryParams> (<Set> hesabının altında)

İstekteki mevcut sorgu parametrelerinin üzerine yeni değerlerle yazar. Bu öğenin etkisi yok yanıt olarak kullanabilirsiniz.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğeleri dizisi
Üst Öğe <Set>
Alt Öğeler <QueryParam>

<QueryParams> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte "address" sorgu parametresini request.header.address değişkeni:

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

<QueryParams> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • HTTP fiili: GET
  • Mesaj türü: İstek

Politikanızda boş sorgu parametreleri tanımlarsanız (<Set><QueryParams/></Set>), politika hiçbir sorgu ayarlamaz parametreleridir. Bu, <QueryParams> öğesinin hariç tutulmasıyla aynıdır.

<ReasonPhrase> (<Set> hesabının altında)

Yanıttaki neden ifadesini ayarlar. Bu işlem, genellikle <StatusCode> Bu öğenin istek üzerinde hiçbir etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize
Üst Öğe <Set>
Alt Öğeler Yok

<ReasonPhrase> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte basit bir neden ifadesi tanımlanmaktadır:

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

2. Örnek

<ReasonPhrase> içeriğinin içeriği ileti şablonu olarak değerlendirilir. Bunun anlamı şudur: küme parantezleri içine alınmış bir değişken adı, çalışma zamanında referans değişkene (aşağıdaki örnekte gösterildiği gibi) bakın:

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

<ReasonPhrase> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: Yanıt

<StatusCode> (<Set> hesabının altında)

Yanıttaki durum kodunu ayarlar. Bu öğenin istek üzerinde hiçbir etkisi yoktur.

Varsayılan Değer "200" (<AssignTo> adlı kullanıcının createNew özelliği değeri "true" olarak ayarlanmıştır)
Zorunlu mu? İsteğe bağlı
Tür Dize veya variable
Üst Öğe <Set>
Alt Öğeler Yok

<StatusCode> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte basit bir durum kodu ayarlanmaktadır:

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

2. Örnek

<StatusCode> içeriğinin içeriği ileti şablonu olarak değerlendirilir. Bu, kullanıcı küme ayraçları içine alınmış değişken adı, çalışma zamanında referans değişkene (aşağıdaki örnekte gösterildiği gibi) bakın:

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

<StatusCode> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: Yanıt

<Verb> (<Set> hesabının altında)

İstekte HTTP fiilini ayarlar. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize veya variable
Üst Öğe <Set>
Alt Öğeler Yok

<Verb> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte istekle ilgili basit bir fiil ayarlanmaktadır:

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

2. Örnek

<Verb> içeriğinin içeriği ileti şablonu olarak değerlendirilir. Bu, değişken adı anlamına gelir sarmalanmış küme parantezleri, çalışma zamanında referans verilen değişkenine eklenmelidir.

Aşağıdaki örnekte bir fiili doldurmak için bir değişken kullanılmaktadır:

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

<Verb> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek

<Version> (<Set> hesabının altında)

Bir istekteki HTTP sürümünü ayarlar. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür Dize veya variable
Üst Öğe <Set>
Alt Öğeler Yok

<Version> öğesi şu söz dizimini kullanır:

Söz dizimi

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

1. Örnek

Aşağıdaki örnekte sürüm numarası "1.1" olarak ayarlanmaktadır:

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

2. Örnek

Aşağıda, sürüm numarasını ayarlamak için süslü ayraç içinde bir değişken kullanılmaktadır:

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

<Version> içeriğinin içeriği ileti şablonu olarak değerlendirilir. Bu, kullanıcı küme ayraçları içine alınmış değişken adı, çalışma zamanında referans verilen değişkenine eklenmelidir.

<Version> özelliğini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:

  • Mesaj türü: İstek

Özel istek mesajları oluşturma

Özel bir istek mesajı oluşturmak içinassignMessage politikasını kullanabilirsiniz. Özel bir kitle oluşturduktan sonra aşağıdaki şekillerde kullanabilirsiniz:

  • Diğer politikalardaki değişkenlerine erişme
  • Harici bir hizmete iletme
ziyaret edin.

Özel bir istek mesajı oluşturmak içinassignMessage politikanızdaki <AssignTo> öğesini kullanın politikası. createNew değerini "true" olarak ayarlayın ve gövdedeki yeni iletinin adını belirtme öğesine ait aşağıdaki örnekte gösterildiği gibi:

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

Varsayılan olarak Edge, özel istek mesajıyla herhangi bir işlem yapmaz. Edge dosyayı oluşturduktan sonra akışa orijinal istekle devam edin. Özel isteği kullanmak için şuna benzer bir politika ekleyin: proxy'nize ServiceReference politikası ile geliştirmenizi sağlar.

Aşağıdaki örneklerde özel istek mesajları oluşturulur:

1. Örnek

Aşağıdaki örnekte, Mesaj Ata seçeneğiyle özel bir istek nesnesi oluşturulur:

<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>

Bu örnek:

  • "MyCustomRequest" adlı yeni bir istek mesajı nesnesi oluşturur.
  • MyCustomRequest'te bu politika:
    • Gelen örnekten user-agent HTTP üst bilgisinin değerini kopyalar yeni mesaj için istek gönderebilir. Çünkü <Copy>, user-agent akış değişkeni, yok <Copy> olarak source özelliğini belirtmeniz gerekiyor.
    • Özel mesajdaki address sorgu parametresini gelen isteğin addy sorgu parametresi.
    • HTTP fiilini GET olarak ayarlar.
  • <IgnoreUnresolvedVariables> değerini "false" olarak ayarlar. <IgnoreUnresolvedVariables> olduğunda değeri "false" olursa, politikanın eklemeye çalıştığı değişkenlerden biri yoksa Edge çalışmayı durdurur. daha ayrıntılı şekilde ele alacağız.

2. Örnek

Aşağıda, Ata ile özel istek nesnesinin nasıl oluşturulacağını gösteren başka bir örnek verilmiştir. Mesaj:

<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>

Bu örnek, "partner.request" adlı yeni bir özel istek oluşturur. Daha sonra Yeni istekte <Verb> ve <Payload>.

Özel istek mesajına akış. Aşağıdaki örnek, özel istek mesajının user-agent üstbilgisi:

<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>

Videolar

AttributionMessage politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.

Video Açıklama
Neden Atama Yapmalısınız? Mesaj Politikası? API isteğini değiştirmek içinassignMessage politikasını kullanmanın avantajları hakkında bilgi edinin veya arka uç kodunu değiştirmeden yanıt vermelidir.
API öğelerini kopyala Atanan İletiler Politikası'nın kullanılması Bir API isteği veya yanıtındaki öğeleri kopyalama ve yeni bir istek veya yanıt oluşturma nesnesini tanımlayın.
API'yi kaldır Atamalar politikasını kullanan öğeler API öğelerini kaldırın ve AttributionMessage politikası.
API ekleme ve ayarlama Atamalar politikasını kullanan öğeler Sorgu parametreleri, başlıklar, form parametreleri veya yükü için bir veya daha fazla kontrol sahibi olabilir.
Özel oluştur Ataması politikasını kullanan değişkenler Ataması politikasını kullanarak özel akış değişkenlerini ayarlayın ve diğer politikaları etkinleştirmeniz gerekir.
Yeni oluştur AttributionMessage politikasını kullanan istek veya yanıt nesneleri API'deki AttributionMessage politikasını kullanarak yeni API isteği veya yanıt nesneleri oluşturma belirler.
Örnek API oluşturma Atanan İletiler Politikası'nın kullanılması YanıtaassignMessage politikasını ekleyerek basit bir örnek REST API oluşturun akışı sağlar.
Atama Politikası'nın kullanıldığı yük Ataması politikasını kullanarak SOAP yükünü ayarlayarak REST isteğini SOAP isteğine dönüştürün. politika.

Hata kodları

Bu bölümde, döndürülen hata kodları ve hata mesajları ile bu politika bir hata tetiklediğinde Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiler, hataları ele almak için hata kuralları geliştiriyorsanız bilinmesi önemlidir. Daha fazla bilgi edinmek için Politika hataları hakkında bilmeniz gerekenler ve Hataları ele alma başlıklı makaleleri inceleyin.

Çalışma zamanı hataları

Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.assignmessage.SetVariableFailed 500 Politika bir değişken ayarlayamadı. Çözümlenmemiş değişkenin adı için hata dizesine bakın.
steps.assignmessage.VariableOfNonMsgType 500

Bu hata, <Copy> öğesindeki source özelliği message türünde olmayan bir değişkene ayarlanırsa ortaya çıkar.

Mesaj türü değişkenleri, HTTP isteklerinin ve yanıtlarının tamamını temsil eder. Yerleşik Edge akış değişkenleri request, response ve message mesaj türündedir. Mesaj değişkenleri hakkında daha fazla bilgi edinmek için Değişkenler referansı bölümüne bakın.

steps.assignmessage.UnresolvedVariable 500

Bu hata, Mesaj Atama politikasında belirtilen bir değişken aşağıdaki durumlarda oluşur:

  • kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
  • veya
  • çözülemiyor (tanımlanmamış)

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden Düzelt
InvalidIndex Mesaj Atama politikasının <Copy> ve/veya <Remove> öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API Proxy'nin dağıtımı başarısız olur.
InvalidVariableName <Name> alt öğesi boşsa veya <AssignVariable> öğesinde belirtilmemişse değer atanacak geçerli bir değişken adı olmadığından API proxy'sinin dağıtımı başarısız olur. Geçerli bir değişken adı gereklidir.
InvalidPayload Politikada belirtilen yük geçersiz.

Hata değişkenleri

Bu değişkenler, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler başlıklı makaleyi inceleyin.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "UnresolvedVariable"
assignmessage.policy_name.failed policy_name, hatayı atan politikanın kullanıcı tarafından belirtilen adıdır. assignmessage.AM-SetResponse.failed = true

Örnek hata yanıtı

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

Örnek hata kuralı

<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>

Şemalar

Her politika türü bir XML şemasıyla (.xsd) tanımlanır. Referans olması amacıyla politika şemaları GitHub'da bulabilirsiniz.

İlgili konular

Çalışıyor Ataması politikasının örnekleri API Platformu örneklerinde bulunabilir.

target.url etiketinin ProxyEndpoint için bu Apigee Topluluğu makalesini inceleyin.

"Yol ayarla"yı görmek için ServiceCallPolicy'nin nasıl çalıştığını görmek için Apigee GitHub örneklerinde Örnek yaparak öğrenme başlıklı makaleye göz atın. Sadece depoyu klonlayıp konuyla ilgili talimatları uygulayın. Örnek, bir istek yolunu ayarlamak için Ataması politikasını kullanır. Ardından, harici bir hizmete istekte bulunmak için bir Hizmet Açıklama Metni Politikası kullanır.