Mesaj İletisi politikası atayın

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

AttributionMessage politikası, API proxy akışı sırasında yeni istek ve yanıt iletilerini değiştirir veya yeni istek ve yanıt mesajları oluşturur. Politika, söz konusu iletilerde aşağıdaki işlemleri gerçekleştirmenize olanak tanır:

  • İletiye yeni form parametreleri, üstbilgiler veya sorgu parametreleri ekleme
  • Mevcut mülkleri bir iletiden diğerine kopyalama
  • Bir mesajdan üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya mesaj yüklerini kaldırma
  • Bir mesajdaki mevcut özelliklerin değerini ayarlayın

AtaMessage politikası ile genellikle istek veya yanıtın özelliklerini ekler, değiştirir veya kaldırırsınız. Ancak, Özel istek mesajları oluşturma bölümünde açıklandığı gibi, özel bir istek veya yanıt mesajı oluşturup bunu alternatif bir hedefe iletmek için AttributionMessage politikasını da kullanabilirsiniz.

AttributionMessage politikası, aşağıdaki alt öğelerle akış değişkenlerini oluşturabilir veya değiştirebilir:

<AssignMessage> öğe

AttributionMessage politikası tanımlar.

Varsayılan Değer Aşağıdaki Varsayılan Politika sekmesine bakın
Zorunlu mu? Gerekli
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, Edge kullanıcı arayüzünde akışınıza bir Atatan Mesajı politikası eklediğinizde varsayılan ayarlar gösterilmektedir:

<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 AttributionMessage politikası eklediğinizde şablon, tüm olası işlemler için künyeler içerir. Genellikle bu politikayla gerçekleştirmek istediğiniz işlemleri seçer ve geri kalan alt öğeleri kaldırırsınız. Örneğin, bir kopyalama işlemi gerçekleştirmek istiyorsanız daha kolay okunabilmesi için <Copy> öğesini kullanıp <Add>, <Remove> ile diğer alt öğeleri politikadan kaldırın.

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 <AssignMessage> alt öğelerinin üst düzey açıklaması verilmektedir:

Alt Öğe Zorunlu mu? Açıklama
Genel işlemler
<Add> İsteğe bağlı <AssignTo> öğesi tarafından belirtilen mesaj nesnesine bilgi ekler.

<Add>, mesaja orijinal iletide bulunmayan üstbilgiler veya parametreler ekler. Mevcut başlıkların veya parametrelerin üzerine yazmak için <Set> öğesini kullanın.

<Copy> İsteğe bağlı source özelliği tarafından belirtilen mesajdaki bilgileri kopyalayıp <AssignTo> öğesi tarafından belirtilen mesaj nesnesine kopyalar.
<Remove> İsteğe bağlı Belirtilen öğeleri, <AssignTo> öğesinde belirtilen mesaj değişkeninden siler.
<Set> İsteğe bağlı İstek veya yanıttaki mevcut özelliklerin <AssignTo> öğesi ile belirtilen değerlerini değiştirir.

<Set>, orijinal iletide zaten mevcut olan üstbilgilerin veya parametrelerin üzerine yazar. Yeni üstbilgiler veya parametreler eklemek için <Add> öğesini kullanın.

Diğer alt öğeler
<AssignTo> İsteğe bağlı AttributionMessage politikasının hangi mesajda çalışacağını belirtir. Bu, standart istek veya yanıt ya da yeni ve özel bir mesaj olabilir.
<AssignVariable> İsteğe bağlı Bir akış değişkenine değer atar. Değişken mevcut değilse <AssignVariable> tarafından oluşturulur.
<IgnoreUnresolvedVariables> İsteğe bağlı Çözülmemiş 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, AttributionMessage politikasını kullanabileceğiniz bazı yöntemler gösterilmektedir:

1: Üstbilgi ekle

Aşağıdaki örnek, <Add> öğesine sahip isteğe bir başlık ekler:

<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> öğesini içeren yanıttan yükü siler:

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

Aşağıdaki örnekte, mevcut bir yanıt nesnesine üstbilgi eklenerek nesnede değişiklik yapılır:

<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, bir HTTP üst bilgisi ekleyerek mevcut bir yanıt mesajını değiştirir.

Bu örnek, <AssignTo> öğesinde bir değişken adını çıkarıp type öğesini "yanıt" olarak belirttiğinden, bu politika hedef sunucu tarafından döndürülen yanıt nesnesini değiştirir.

Bu politika tarafından yanıt mesajına eklenen HTTP üstbilgisi, LookupCache politikası tarafından doldurulan bir değişkenden türetilir. Bu nedenle, bu Mesaj Ata politikası tarafından değiştirilen yanıt mesajı, sonuçların önbellekten alınıp alınmadığını gösteren bir HTTP üstbilgisi içerir. Yanıtta başlıkları ayarlamak, hata ayıklama ve sorun giderme açısından yararlı olabilir.

4: Dinamik içeriği ayarlayın

Yanıt ve istek mesajı yüküne dinamik içerik yerleştirmek için Mesaj Ata seçeneğini kullanabilirsiniz.

Edge akış değişkenlerini bir XML yüküne yerleştirmek için belirtilen değişkeni şu şekilde süslü ayraç içine alın: {prefix.name}.

Aşağıdaki örnekte, user-agent HTTP üst bilgi akış değişkeninin değeri User-agent adlı bir XML öğesine yerleştirilmiştir:

<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 aşağıdaki örnekte gösterildiği gibi, variablePrefix ve variableSuffix özelliklerini sınırlayıcı karakterlerle kullanarak değişkenler ekleyebilirsiniz:

<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ü itibarıyla değişken eklemek için küme parantezlerini de kullanabilirsiniz.

5: Sorgu parametresini kaldır

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>

Kullanıcı kimlik doğrulaması için VerifyAPIKey politikasını kullandığınızda apikey sorgu parametresini istek mesajından çıkarmak en iyi uygulamadır. Bunu, hassas anahtar bilgilerin arka uç hedefine aktarılmasını önlemek için yaparsınız.

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 yükünde ayarlar.
<!-- 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 istekte üç değişken oluşturup ayarlar. Her <Name> öğesi bir değişken adı, <Value> ise değeri belirtir.

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

<!-- 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 ve <Name> öğeleri yeni değişkenlerin adlarını belirtir. <Ref> öğesi tarafından başvurulan değişkene erişilemiyorsa <Value> öğesi tarafından belirtilen değeri kullanabilirsiniz.

Bu politika grubunu denemek için:

  1. İstek akışına 1. ve 2. politikaları ekleyin. 1. politikayı, 2. politikadan önce eklediğinizden emin olun.
  2. Üçüncü politikayı yanıt akışına ekleyin.
  3. Üçüncü politika, değişkenleri yanıta eklemek için <Set> öğesini kullanır. 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> içindeki akış değişkenlerine erişmek için kullanılan söz diziminin, bunları küme parantezi içine almak olduğunu unutmayın.

    <Payload> öğesinin contentType özelliğini "application/xml" olarak ayarladığınızdan emin olun.

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

    İsteğe bağlı olarak, XML'in güzel biçimlendirilmiş bir yapıda görüntülenmesini sağlamak için sonuçları xmllint gibi bir yardımcı program üzerinden bağlayabilirsiniz:

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

    Yanıtın 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 başlıklarını alma

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

<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 üstbilgi 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 GitHub'da AssignmentMessage örneği sayfasına göz atın.

Alt öğe referansı

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

<Add>

İstek veya yanıta <AssignTo> öğesi tarafından belirtilen bilgileri ekler.

<Add> öğesi, mesaja orijinal mesajda bulunmayan yeni özellikler ekler. Mevcut özelliklerin değerlerini değiştirmek için <Set> öğ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>
<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, ilk istekten üç sorgu dizesi parametresinin değerlerini almak ve bunları hedef uç nokta isteğinde form parametreleri olarak ayarlamak için <FormParams> öğesi kullanılmaktadır:

<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, hedef uç nokta isteğine User-Agent üst bilgisini eklemek için <Headers> öğesi kullanılmaktadır:

<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, isteğe statik değere sahip tek bir sorgu parametresi eklemek için <QueryParams> öğesi kullanılmaktadır:

<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 örnek, istek ön akışında <Add> öğesini kullanır. Sonuçlara İzleme aracı gibi bir araçta bakarsanız "http://httpbin.org/get" isteği "http://httpbin.org/get?myParam=42" olur.

<Add> öğesinin alt öğeleri, mesaj şablonu olarak bilinen dinamik dize değiştirmeyi destekler.

<FormParams> (<Add> alt öğesi)

İstek mesajına yeni form parametreleri ekler. Bu öğenin bir yanıt mesajı üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğe 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 örnek, isteğe tek bir form parametresi ("answer") ve statik değer ("42") ekler:

<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 bir form parametresi olarak isteğe ekler:

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

Bu örneğin <AssignTo> içeren bir hedef belirtmediğini unutmayın. Bu politika, parametreyi yalnızca isteğe ekler.

3. Örnek

Aşağıdaki örnekte, isteğe birden fazla 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, sorgu dizesi parametrelerini kaynak istekten alır ve hedef uç noktaya gönderilen isteğe form parametreleri olarak ekler.

Akışa bakmak için İzleme aracını kullanabilirsiniz. İsteğin gövdesinin, başlangıçta sorgu dizesi parametreleri olarak iletilen URL kodlamalı form verilerini içerdiğini görürsünüz:

%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 de):
    • Form verileri: Bir değere veya "" değerine (boş dize) ayarlayın. Örneğin, curl ile isteğinize -d "" ekleyin.
    • Content-Length üstbilgisi: 0 olarak ayarlayın (orijinal istekte veri yoksa bayt cinsinden geçerli uzunluk). Örneğin, curl ile 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, mesajı hedef hizmete göndermeden önce isteğin Content-Type üstbilgisini "application/x-www-form-urlencoded" olarak ayarlar.

<Headers> (<Add> alt öğesi)

Belirtilen istek veya yanıta, <AssignTo> öğesi tarafından belirtilen yeni üst bilgiler ekler.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğe 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 örnek, istek mesajına user-agent üstbilgisini ekler 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> alt öğesi)

İ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> öğe 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, isteğe "myParam" sorgu parametresi eklenir ve buna "42" değeri atanır:

<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

Ayrıca, sorgu parametrelerini yalnızca <AssignTo> öğesinin type özelliği bir istek mesajı olduğunda ayarlayabilirsiniz. Yanıtta bunları ayarlamanın herhangi bir etkisi yoktur.

Politikanızda (<Add><QueryParams/></Add>) boş bir sorgu parametreleri dizisi tanımlarsanız politika, herhangi bir sorgu parametresi eklemez. Bu, <QueryParams> öğesini atlamakla aynıdır.

<AssignTo>

AttributionMessage politikasının hangi nesne üzerinde çalışacağı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, AttributionMessage politikasının etkili olduğu nesneyi değiştiremeyeceğinizi unutmayın. Örneğin, yanıta sorgu parametreleri (<QueryParams>) veya form parametreleri (<FormParams>) eklemek veya bunları değiştirmek için <Add> ya da <Set> kullanamazsınız. İstekte yalnızca sorgu parametrelerini ve form parametrelerini değiştirebilirsiniz.

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

<AssignTo> politikasını belirtmezseniz politika, yürütüldüğü yere bağlı olan varsayılan istek veya yanıta göre hareket eder. Politika, istek akışında yürütülürse istek mesajını etkiler. Yanıt akışında yürütülürse politika, varsayılan olarak yanıtı etkiler.

<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 örnek, hedefin, hedef uç noktaya gönderilecek orijinal istek olduğunu belirtir:

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

Bu örnekte, createNew değeri "false" (varsayılan) olarak ayarlandığında yeni bir istek oluşturulmaz. Bu politikadaki tüm işlemler orijinal isteği etkiler.

2. Örnek

Aşağıdaki örnek yeni bir istek nesnesi oluşturur:

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

Yeni bir istek veya yanıt nesnesi oluşturduğunuzda, AtaMessage politika politikasının diğer öğeleri (ör. <Add>, <Set> ve <Set>) bu yeni istek nesnesine göre hareket eder.

Yeni istek nesnesine akışın sonraki aşamalarında diğer politikalarda erişebilir veya yeni istek nesnesini ServiceCallout politikasıyla harici bir hizmete gönderebilirsiniz.

3. Örnek

Aşağıdaki örnek, "MyRequestObject" adlı yeni bir istek nesnesi oluşturur:

<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, AtaMessage politika politikasının diğer öğeleri (ör. <Add>, <Set> ve <Set>) bu yeni istek nesnesine göre hareket eder.

Yeni istek nesnesine akışın sonraki aşamalarında diğer politikalarda erişebilir veya yeni istek nesnesini ServiceCallout politikasıyla harici bir hizmete gönderebilirsiniz.

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" değerine sahipse type tarafından belirtilen türde yeni bir değişken ("istek" ya da "yanıt") oluşturur. Yeni değişkenin adını belirtmezseniz politika, type değerine dayanarak yeni bir istek veya yanıt nesnesi oluşturur.

Politika "false" (yanlış) değerine ayarlanırsa politika şu iki yöntemden biriyle yanıt verir:

  • <AssignTo>, değişken adını bir istek veya yanıt olarak çözebilirse işlemeye devam eder. Örneğin, politika bir istek akışındaysa değişken, istek nesnesidir. Politika bir yanıtta bulunuyorsa değişken, yanıt nesnesidir.
  • <AssignTo> çözümlenemezse veya mesaj olmayan bir türe çözülürse politika bir hata verir.

createNew belirtilmezse politika aşağıdaki iki yöntemden biriyle yanıt verir:

  • <AssignTo> bir mesaja çözüm bulursa işleme bir sonraki adıma ilerler.
  • <AssignTo> çözümlenemezse veya mesaj olmayan bir türe çözümlenirse type özelliğinde belirtilen yeni bir değişken oluşturulur.
İ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"dir (desteklenen tek değer).

İsteğe bağlı Dize
type createNew "true" olduğunda, yeni mesajın türünü belirtir. Geçerli değerler "request" veya "response"tur.

Varsayılan değer "request" değeridir. Bu özelliği çıkarırsanız Edge bu politikanın akışın neresinde yürütüldiğine bağlı olarak bir istek veya yanıt oluşturur.

İsteğe bağlı Dize

<AssignVariable>

Bir hedef akış değişkenine (ör. değeri, AttributionMessage politikası tarafından ayarlanan bir değişken) bir değer atar. Akış değişkeni mevcut değilse <AssignVariable> değişkeni oluşturur.

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: Hedef akış değişkeni için bir değişmez dize değeri belirtmek için <Value> alt öğesini kullanın.
  • Akış değişkeni: Hedef akış değişkenine ilişkin mevcut bir akış değişkeninin değerini belirtmek için <Ref> alt öğesini kullanın. Kaynak olarak kullanılabilecek akış değişkenlerinin tam listesi için Akış değişkenleri referansı bölümüne bakın.
  • Mesaj şablonu: Hedef akış değişkeni için bir mesaj şablonu belirtmek üzere <Template> alt öğesini kullanın.

<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. <Ref> tarafından referans verilen değişkene erişilemiyorsa Edge, <Value> öğesi tarafından belirtilen değeri kullanır. <Template> öğesini tanımlarsanız diğer alt öğelere göre öncelikli olur.

1. Örnek

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

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

2. Örnek

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

<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, hedef akış değişkenine "ErrorOnCopy" değerini atar.

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

3. Örnek

Aşağıdaki örnekte, iki bağlam değişkenini aralarında bir hazır dize (tire) olacak şekilde birleştirmek için <Template> alt öğesi kullanılmaktadır:

<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şlevinin yaygın bir kullanımı sorgu parametresi, başlık veya istekle birlikte aktarılabilecek başka bir değer için varsayılan değer ayarlamaktır. Bunu hem <Ref> hem de <Value> alt öğelerinin bir kombinasyonuyla yaparsınız. Daha fazla bilgi için <Ref> örneklerine bakın.

<Name> (<AssignVariable> alt öğesi)

Hedef akış değişkeninin adını (ör. değeri AttributionMessage politikası tarafından ayarlanan değişken) belirtir. <AssignVariable> içinde adlandırılmış değişken yoksa politika bu adla bir değişken oluşturur.

Varsayılan Değer Yok
Zorunlu mu? Gerekli
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 örnekte hedef değişkeni myvar olarak belirlemekte ve değişmez değer olarak "42" değerini belirlemektedir:

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

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

<Ref> (<AssignVariable> alt öğesi)

Atamanın kaynağını bir akış değişkeni olarak belirtir. Akış değişkeni, önceden tanımlanmış akış değişkenlerinden biri (Akış değişkenleri referansında listelenen şekilde) veya oluşturduğunuz bir özel akış değişkeni olabilir.

<Ref> değeri her zaman bir akış değişkeni olarak yorumlanır. Değer olarak bir değişmez dize belirtemezsiniz. Değişmez dize değeri atamak için bunun yerine <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> içeren bir akış değişkeni belirtirken normalde bir akış değişkenine referans vermek için kullandığınız kapanış parantezlerini "{}" çıkarın. Örneğin, yeni değişkeninizin değerini client.host akış değişkeninin değerine ayarlamak için:

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 değer tanımlamak üzere <Value> parametresini <Ref> ile birlikte kullanın. <Ref> tarafından belirtilen akış değişkeni yoksa, okunamıyor veya boşsa Edge, <Value> değerini bunun yerine hedef akış değişkenine atar.

<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 request.header.user-agent akış değişkeninin değeri myvar hedef akış değişkenine ve country sorgu parametresinin değeri Country değişkenine atanır:

<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'de her iki atama için de varsayılan (veya yedek değer) belirtilmemiştir.

2. Örnek

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

<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 veya Country sorgu parametresinin değerleri boş, okunamazsa ya da bozuksa Edge, yeni değişkenlere "ErrorOnCopy" değerini atar.

3. Örnek

<AssignVariable> için yaygın bir kullanım alanı sorgu parametresinin, üst bilginin veya istekle birlikte aktarılabilecek başka bir değerin varsayılan değerini ayarlamaktır. Örneğin, isteğin "w" adlı tek bir sorgu parametresi aldığı bir hava durumu API proxy'si oluşturursunuz. Bu parametre, hava durumunu öğrenmek istediğiniz şehrin kimliğini içerir. İstek URL'si şu biçimde olur:

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

"w" için varsayılan bir değer tanımlamak amacıyla aşağıdaki gibi bir AttributionMessage politikası oluşturun:

<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ıp kendisine atar. Akış değişkeni null ise yani "w" sorgu parametresi istekten çıkarılmışsa bu örnekte <Value> öğesindeki varsayılan değer kullanılır. Dolayısıyla bu API proxy'sine, "w" sorgu parametresini atlayan bir istekte bulunabilirsiniz:

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

...ve API proxy'sinin yine de geçerli bir sonuç döndürmesini sağlayın.

<Value> işlevinin aksine <Ref> değeri request, response veya target nesnesinin özelliği gibi bir akış değişkeni olmalıdır. Değer, oluşturduğunuz özel bir akış değişkeni de olabilir.

<Ref> değeri için var olmayan bir akış değişkeni belirtirseniz ve <IgnoreUnresolvedVariables> değeri "true" ise Edge hata verir.

<Template> (<AssignVariable> alt öğesi)

Bir ileti şablonunu belirtir. Mesaj şablonu, politika yürütüldüğünde değişken dizesi değiştirme işlemi gerçekleştirmenize olanak tanır ve değişmez dizeleri süslü ayraç içinde sarmalanmış değişken adlarıyla birleştirebilir. Ayrıca mesaj şablonları, çıkış yapma ve büyük/küçük harf dönüştürme gibi işlevleri destekler.

Değişkenin değerinin mesaj şablonu olduğu bir akış değişkeni belirtmek için ref özelliğini kullanın. Örneğin, bir mesaj şablonunu bir geliştirici uygulamasında özel özellik olarak depolayabilirsiniz. Edge, API anahtarını veya güvenlik jetonunu doğruladıktan sonra (ek bir politika aracılığıyla) geliştirici uygulamasını tanımlarken <AssignVariable> öğesi, uygulamanın güvenlik politikasında akış değişkeni olarak sunulan özel özelliğindeki mesaj şablonunu kullanabilir. Aşağıdaki örnekte, mesaj şablonunun, API çağrısı yapan geliştirici uygulamasında message_template adlı bir müşteri özelliğinde mevcut olduğu ve uygulamanın API anahtarını doğrulamak için VerifyAPIKey politikasının kullanıldığı varsayılmıştır:

<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 içerik değişkeninin arasında bir değişmez dize (tire) olacak şekilde birleştirmek için mesaj şablonu söz dizimi kullanılmaktadır:

<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, değişkenin değeri önceden tanımlanmış bir mesaj şablonu olduğu bir akış değişkeni belirtilmektedir. Politikayı değiştirmek zorunda kalmadan, çalışma zamanında önceden tanımlanmış bir şablon eklemek istiyorsanız bu seçeneği kullanın:

<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 bir metin değeri belirtilmektedir. Bu durumda, başvurulan değişken null değilse bu değer şablon olarak kullanılır. Başvurulan değer boşsa şablon olarak metin değeri (bu örnekte {system.uuid}-{messageid}) kullanılır. Bu kalıp, bazı durumlarda varsayılan şablonu (metin bölümü) dinamik olarak ayarlanan değerlerle geçersiz kılmak istediğiniz bir "geçersiz kıl" değeri sağlamak için yararlıdır. Örneğin, bir koşullu ifade anahtar/değer eşlemesinden bir değer alabilir ve başvurulan değişkeni bu değere ayarlayabilir:

<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> alt öğesi)

<AssignVariable> ile ayarlanan hedef akış değişkeninin değerini tanımlar. Değer her zaman bir değişmez dize olarak yorumlanır. Değeri köşeli parantez ("{}") içine alsanız bile bir akış değişkenini değer olarak kullanamazsınız. Akış değişkeni kullanmak için bunun yerine <Ref> kullanın.

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

<Value>, <Ref> öğesiyle birlikte kullanıldığında varsayılan (veya yedek) değer olarak hareket eder. <Ref> belirtilmezse, çözümlenemez veya boşsa <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 myvar hedef akış değişkeninin değeri "42" değişmez değerine ayarlanmaktadır:

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

2. Örnek

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

<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>, hedef akış değişkenine "ErrorOnCopy" değerini atar.

<Copy>

source özelliği tarafından belirtilen mesajdaki değerleri <AssignTo> öğesi tarafından belirtilen mesaja kopyalar. <AssignTo> ile bir hedef belirtmezseniz bu politika, akışın neresinde yürütüldiğine bağlı olarak değerleri isteğe veya yanıta kopyalar.

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 başlık, üç form parametresi, yol ve tüm sorgu parametreleri istekten yeni ve özel bir isteğe kopyalanır:

<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 ele alınır. Örneğin, politika istek akışındaysa kaynak varsayılan olarak request nesnesine ayarlanır. Politika, yanıt akışı içindeyse varsayılan olarak response nesnesine ayarlanır. source öğesini çıkarırsanız kopyanın kaynağı olarak bir akış değişkenine mutlak referans kullanabilirsiniz. Örneğin, değeri {request.header.user-agent} olarak belirtin.
  • Kaynak değişken çözümlenemezse veya mesaj olmayan bir türe çözümlenirse <Copy> yanıt veremez.
İsteğe bağlı Dize

<FormParams> (<Copy> alt öğesi)

<Copy> öğesinin source özelliği tarafından belirtilen istekteki form parametrelerini <AssignTo> öğesi tarafından belirtilen isteğe kopyalar. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğe dizisi veya boş 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 tek bir form parametresi "MyCustomRequest" özel isteğine kopyalanır:

<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 "MyCustomRequest" özel isteğine kopyalanır:

<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, "MyCustomRequest" özel isteğine üç form parametresi kopyalanmıştır:

<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 "f3"ün ikinci değeri kopyalanır. "f3"ün yalnızca bir değeri varsa bu değer 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 de):
    • Form verileri: Bir değere veya "" değerine (boş dize) ayarlayın. Örneğin, curl ile isteğinize -d "" ekleyin.
    • Content-Length üstbilgisi: 0 olarak ayarlayın (orijinal istekte veri yoksa geçerli uzunluk. Örneğin, curl ile isteğinize -H "Content-Length: 0" ekleyin.

<FormParams> öğesini kopyaladığınızda <Copy>, iletiyi hedef hizmete göndermeden önce Content-Type özelliğini "application/x-www-form-urlencoded" olarak ayarlar.

<Headers> (<Copy> alt öğesi)

<Copy> öğesinin source özelliği tarafından belirtilen istek veya yanıt mesajından gelen HTTP üst bilgilerini, <AssignTo> öğesi tarafından belirtilen istek veya yanıt mesajına kopyalar.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğe dizisi veya boş 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 üst bilgisi yeni, özel istek nesnesine kopyalanır:

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

<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 "h3"ün ikinci değeri kopyalanmaktadır. "h3"ün yalnızca bir değeri varsa bu değer kopyalanmaz.

<Path> (<Copy> alt öğesi)

Yolun, kaynak istekten hedef isteğe kopyalanıp kopyalanmayacağını belirler. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Bu politika "true" (doğru) değerine ayarlanırsa <Copy> öğesinin source özelliği tarafından belirtilen istek mesajındaki yol, <AssignTo> öğesi tarafından belirtilen istek mesajına kopyalanı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 örnek, AttributionMessage politikasının yolu kaynak istekten yeni, özel istek nesnesine kopyalaması gerektiğini belirtir:

<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> alt öğesi)

Yükün kaynaktan hedefe kopyalanıp kopyalanmayacağını belirler. Kaynak ve hedef, istek veya yanıt olabilir.

Bu politika "true" değerine sahipse yükü <Copy> öğesinin source özelliği tarafından belirtilen mesajdan <AssignTo> öğesi tarafından belirtilen mesaja kopyalar.

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 ayarlanır. Böylece istek yükü, istekten yanıta kopyalanır:

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

<QueryParams> (<Copy> alt öğesi)

Sorgu dizesi parametrelerini <Copy> öğesinin source özelliği tarafından belirtilen istek içinden <AssignTo> öğesi tarafından belirtilen isteğe kopyalar. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğe dizisi veya boş 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, istekteki "my_param" sorgu parametresi yeni bir özel istek nesnesine kopyalanır:

<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 ve özel bir istek nesnesine kopyalanır:

<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"te yalnızca bir değer varsa bu değer kopyalanmaz.

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

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

<ReasonPhrase> (<Copy> alt öğesi)

Neden ifadesinin, kaynak yanıttan hedef yanıta kopyalanıp kopyalanmayacağını belirler. Bu öğenin istek üzerinde herhangi bir etkisi yoktur.

Bu politika "true" (doğru) değerine ayarlanırsa ReasonPhrase, <Copy> öğesinin source özelliği tarafından belirtilen yanıt içinden, <AssignTo> öğesi tarafından belirtilen yanıta kopyalanır.

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 ayarlıdır. Bu da <Copy> ürününün, neden ifadesini varsayılan yanıttan bir özel yanıt nesnesine kopyalamasına neden olur:

<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> alt öğesi)

Durum kodunun kaynak yanıttan hedef yanıta kopyalanıp kopyalanmadığını belirler. Bu öğenin istek üzerinde herhangi bir etkisi yoktur.

Bu politika "true" (doğru) değerine ayarlanırsa <Copy> öğesinin source özelliği tarafından belirtilen yanıt mesajındaki durum kodu, <AssignTo> öğesi tarafından belirtilen yanıt mesajına kopyalanı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 ayarlanıp varsayılan yanıt nesnesindeki durum kodu yeni bir özel yanıt nesnesine kopyalanır:

<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şlevinin yaygın bir kullanımı, <AssignTo>'in createNew özelliği "true" olarak ayarlandığında proxy yanıtının hedeften alınan yanıtla aynı duruma sahip olmasını sağlamaktır.

<Verb> (<Copy> alt öğesi)

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

Değer "true" (doğru) değerine ayarlanırsa <Copy> öğesinin source özelliğinde bulunan fiili, <AssignTo> öğesinde belirtilen isteğe kopyalar.

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> değeri "true" olarak ayarlanıp varsayılan istekteki fiil yeni, özel bir isteğe kopyalanır:

<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> alt öğesi)

HTTP sürümünün kaynak istekten hedef isteğe kopyalanıp kopyalanmadığını belirler. Bu öğenin yanıtlar üzerinde etkisi yoktur.

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

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, istek üzerinde <Version> değeri "true" olarak ayarlanarak varsayılan istek nesnesindeki sürüm yeni ve özel bir istek nesnesine kopyalanır:

<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ı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, daha doğal bir adla etiketlemek için name özelliğine ek olarak kullanın.

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

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı. <DisplayName> özelliğini çıkarırsanız politikanın name özelliğinin değeri kullanılır
Tür Dize
Üst Öğe <PolicyElement>
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 yoktur.

<IgnoreUnresolvedVariables>

Çözülmemiş 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ülmemiş 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> değerinin true olarak ayarlanması, değişkenlerin ayarlanmasına ve alınmasına özel olması açısından <AssignMessage> continueOnError öğesinin true olarak ayarlanmasından farklıdır. continueOnError öğesini true olarak ayarlarsanız Edge yalnızca değişkenler kullanılırken karşılaşılan hataları değil, tüm hataları yoksayar.

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

Bir iletinin üstbilgilerini, sorgu parametrelerini, form parametrelerini ve/veya mesaj yükünü kaldırır. Bu mesaj bir istek veya yanıt olabilir. <AssignTo> öğesini kullanarak <Remove> öğesinin hangi mesaj üzerinde işlem yapacağını belirtirsiniz.

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şlevinin yaygın bir kullanım alanı, hassas bilgiler içeren bir sorgu parametresinin arka uç sunucusuna iletilmesini önlemek için gelen istek nesnesinden silinmesidir.

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

Bu politika, yanıt akışında yanıtın gövdesini kaldırarak istemciye yalnızca HTTP üst bilgileri döndürür.

2. Örnek

Aşağıdaki örnek, gelen istekten tüm form parametrelerini ve bir sorgu parametresini kaldırır:

<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> alt öğesi)

Belirtilen form parametrelerini istekten kaldırır. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğe dizisi veya boş 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 örnekte istekten üç form parametresi kaldırılmaktadı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, istekten 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 "f3"ün ikinci değeri kaldırılmaktadır. "f3"ün yalnızca bir değeri varsa bu değer 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-urlencoded"

<Headers> (<Remove> alt öğesi)

Belirtilen HTTP üst bilgilerini, <AssignTo> öğesi tarafından belirtilen istek veya yanıttan kaldırır.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğe dizisi veya boş 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, istekten "h1", "h2" ve "h3"ün ikinci değerini kaldırır. "h3"ün yalnızca bir değeri varsa kaldırılmaz.

<Payload> (<Remove> alt öğesi)

<Remove> öğesinin, <AssignTo> öğesi tarafından belirtilen istek veya yanıttaki yükü silip silmediğini belirler. Yükü temizlemek için "true" (doğru), aksi takdirde "false" (yanlış) değerine ayarlayın. Varsayılan değer "false" 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, istek yükünün temizlenmesi için <Payload> değeri "true" olarak ayarlanır:

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

<QueryParams> (<Remove> alt öğesi)

Belirtilen sorgu parametrelerini istekten kaldırır. Bu öğenin yanıtlar üzerinde etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğe dizisi veya boş 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, istekten 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 örnekte, "qp1", "qp2" ve "qp3"ün ikinci değeri istekten kaldırılır. "qp3"ün yalnızca bir değeri varsa 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>

<AssignTo> öğesi tarafından belirtilen istek veya yanıt mesajındaki bilgileri ayarlar. <Set>, orijinal iletide zaten bulunan üstbilgilerin veya parametrelerin üzerine yazar. Yeni bir üst bilgi veya parametre oluşturmak için bunun yerine <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> alt öğesi)

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

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <FormParam> öğe 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, yeni bir özel istekteki request.header.myparam değişkeninin değerine ayarlanmaktadır:

<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 (<Add><FormParams/></Add>) boş form parametreleri tanımlarsanız politika, herhangi bir form parametresi eklemez. Bu, <FormParams> öğesinin atlanması ile aynıdır.

<Set>, mesajın Content-Type değerini hedef uç noktaya göndermeden önce "application/x-www-form-urlencoded" olarak değiştirir.

<Headers> (<Set> alt öğesi)

İstekte veya yanıtta <AssignTo> öğesi tarafından belirtilen mevcut HTTP üst bilgilerinin üzerine yazar.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <Header> öğe 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 üst bilgisini request.header.user-agent değişkeninin değerine ayarlar:

<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 (<Add><Headers/></Add>) boş başlıklar tanımlarsanız politika, herhangi bir başlık eklemez. Bu, <Headers> öğesini atlamak ile aynıdır.

<Path> (<Set> alt öğesi)

<Payload> (<Set> alt öğesi)

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

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ü ayarlanır:

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

2. Örnek

Aşağıdaki örnek bir JSON yükü ayarlar:

<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ı süslü ayraç içinde sarmalanarak yüke değişken değerler ekler:

<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) JSON yükleri içindeki değişken referanslarını belirtmek için küme parantezlerini kullanamıyordunuz. Bu sürümlerde, sınırlayıcı karakterleri belirtmek için variablePrefix ve variableSuffix özelliklerini kullanmanız ve aşağıdaki gibi değişken adlarını sarmalamak için bunları kullanmanız gerekiyordu:

<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 bir ileti şablonu olarak ele alınır. Diğer bir deyişle, AttributionMessage politikası, süslü ayraç içine alınmış değişkenleri, çalışma zamanında başvurulan değişkenlerin değeriyle değiştirir.

Aşağıdaki örnekte, yükün bir kısmını değişken değerine ayarlamak için küme parantezi söz dizimi kullanılmıştır:

<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 bilgisine atanır.

İ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. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. İsteğe bağlı Karakter
variableSuffix İsteğe bağlı olarak, bir akış değişkeninde sondaki sınırlayıcıyı belirtir. Varsayılan olarak "}" kullanılır. Daha fazla bilgi için Akış değişkenleri referansı konusuna bakın. İsteğe bağlı Karakter

<QueryParams> (<Set> alt öğesi)

Yeni değerlerle istekteki mevcut sorgu parametrelerinin üzerine yazar. Bu öğenin yanıtlar üzerinde herhangi bir etkisi yoktur.

Varsayılan Değer Yok
Zorunlu mu? İsteğe bağlı
Tür <QueryParam> öğe 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 parametresi, request.header.address değişkeninin değerine ayarlanmaktadır:

<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 (<Set><QueryParams/></Set>) boş sorgu parametreleri tanımlarsanız politika, herhangi bir sorgu parametresi ayarlamaz. Bu, <QueryParams> öğesini atlamakla aynıdır.

<ReasonPhrase> (<Set> alt öğesi)

Yanıttaki neden ifadesini belirler. Bu işlem normalde <StatusCode> ile birlikte hata ayıklama için yapılır. Bu öğenin istek üzerinde herhangi 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 bir ileti şablonu olarak ele alınır. Bu, aşağıdaki örnekte gösterildiği gibi, çalışma sırasında küme parantezlerine sarmalanmış bir değişken adının çalışma zamanında referans verilen değişkenin değeriyle değiştirileceği anlamına gelir:

<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> alt öğesi)

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

Varsayılan Değer "200" (<AssignTo>'in createNew özelliği "true" olarak ayarlandığında)
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 ayarlanı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 bir ileti şablonu olarak ele alınır. Bu, aşağıdaki örnekte gösterildiği gibi, çalışma zamanında küme parantezine sarmalanmış bir değişken adının başvurulan değişkenin değeriyle değiştirileceği anlamına gelir:

<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> alt öğesi)

İstekteki HTTP fiili 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, istek için 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 bir ileti şablonu olarak ele alınır. Bu, çalışma zamanında küme parantezlerine sarmalanmış bir değişken adının, başvurulan değişkenin değeriyle değiştirileceği anlamına gelir.

Aşağıdaki örnekte bir fiili doldurmak için 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> alt öğesi)

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 küme parantezinde 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 bir ileti şablonu olarak ele alınır. Bu, çalışma zamanında küme parantezlerine sarmalanmış bir değişken adının, başvurulan değişkenin değeriyle değiştirileceği anlamına gelir.

<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çin AttributionMessage politikasını kullanabilirsiniz. Oluşturduğunuz özel isteği aşağıdaki şekillerde kullanabilirsiniz:

  • Diğer politikalardaki değişkenlerine erişin
  • Harici bir hizmete aktarın

Özel istek mesajı oluşturmak için AtaMessage politika politikanızdaki <AssignTo> öğesini kullanın. createNew öğesini "true" olarak ayarlayın ve aşağıdaki örnekte gösterildiği gibi, öğenin gövdesinde yeni mesajın adını belirtin:

<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, oluşturulduktan sonra orijinal istekle akışa devam eder. Özel isteği kullanmak için proxy'nize, özel isteği harici bir hizmete iletebilecek ServiceCallout politikası gibi bir politika ekleyin.

Aşağıdaki örnekler özel istek mesajları oluşturur:

1. Örnek

Aşağıdaki örnekte "İleti Ata" seçeneği kullanılarak ö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 istekten user-agent HTTP üst bilgisi değerini yeni mesaja kopyalar. <Copy>, user-agent akış değişkenine mutlak bir başvuru kullandığından <Copy> için source özelliğini belirtmeye gerek yoktur.
    • Özel mesajdaki address sorgu parametresini, gelen isteğin addy sorgu parametresinin değerine ayarlar.
    • HTTP fiili GET olarak ayarlar.
  • <IgnoreUnresolvedVariables> değerini "false" (yanlış) olarak ayarlar. <IgnoreUnresolvedVariables> değeri "false" olduğunda, politikanın eklemeye çalıştığı değişkenlerden biri mevcut değilse Edge, API akışında işlemeyi durdurur.

2. Örnek

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

<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> öğelerini ayarlar.

Akışın ilerleyen aşamalarında oluşan başka bir Atatan Politikası'ndaki özel istek mesajına erişebilirsiniz. Aşağıdaki örnek, özel istek mesajının user-agent üst bilgisinin değerini alır:

<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 Mesaj Politikası Atamalısınız? Arka uç kodunu değiştirmeden API isteğini veya yanıtı değiştirmek için AttributionMessage politikasını kullanmanın avantajlarını öğrenin.
assignMessage politikasını kullanarak API öğelerini kopyalama Bir API isteği veya yanıtındaki öğeleri kopyalayın ve AttributionMessage politikasını kullanarak yeni bir istek veya yanıt nesnesi oluşturun.
assignMessage politikasını kullanarak API öğelerini kaldırma AtaMessage politikasını kullanarak API öğelerini kaldırın ve hedef arka uca ulaşmadan önce API'de değişiklik yapın.
assignMessage politikasını kullanarak API öğeleri ekleme ve ayarlama AtaMessage politikasını kullanıp sorgu parametreleri, başlıklar, form parametreleri veya yükler ekleyerek API isteğini veya yanıtını değiştirin.
assignMessage politikasını kullanarak özelleştirilebilen değişkenler oluşturma AttributionMessage politikasını kullanarak özel akış değişkenlerini ayarlayın ve API proxy'sindeki diğer politikalarda bulunan değişkenlerden yararlanın.
assignMessage politikasını kullanarak yeni istek veya yanıt nesneleri oluşturma API çalışma zamanında AttributionMessage politikasını kullanarak yeni API isteği veya yanıt nesneleri oluşturun.
assignMessage politikasını kullanarak örnek API oluşturma Yanıt akışına AttributionMessage politikasını ekleyerek basit bir örnek REST API oluşturun.
assignMessage politikasını kullanarak yükü ayarlayın veya değiştirin API çalışma zamanında AttributionMessage politika politikasını kullanıp SOAP Yükünü ayarlayarak REST isteğini SOAP isteğine dönüştürün.

Hata kodları

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

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

Bu hata, <Copy> öğesindeki source özelliği mesaj 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 için Değişkenler referansı başlıklı makaleyi inceleyin.

steps.assignmessage.UnresolvedVariable 500

Bu hata, Mesaj Ata politikasında belirtilen bir değişken aşağıdakilerden biriyse ortaya çıkar:

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

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden Düzelt
InvalidIndex Mesaj Ata Politikası'nın <Copy> ve/veya <Remove> öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API Proxy'si 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 bir yük geçersiz.

Hata değişkenleri

Bu değişkenler, bu politika çalışma zamanında bir hata tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "UnresolvedVariable"
assignmessage.policy_name.failed policy_name, hataya neden olan 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"
   }
}

Hata kuralı örneği

<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ü, XML şemasıyla (.xsd) tanımlanır. GitHub'da, politika şemalarını referans olarak bulabilirsiniz.

İlgili konular

assignMessage politikasının çalışma örnekleri API Platformu örneklerinde mevcuttur.

ProxyEndpoint'ten target.url öğesinin nasıl geçersiz kılınacağına dair daha gelişmiş bir örnek için bu Apigee Topluluğu makalesini inceleyin.

Bir ServiceCallout politikasında bir "set path" öğesini iş başında görmek için Apigee GitHub örneklerinde yer alan Learn by using example başlıklı makaleye göz atın. Depoyu klonlayıp bu konudaki talimatları uygulamanız yeterlidir. Örnekte, bir istek yolu belirlemek için AtaMessage politikası kullanılıyor, ardından harici bir hizmete istekte bulunmak için bir Hizmet Çağrısı politikası kullanılıyor.