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ı. İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı, doğal bir dille etiketlemek için |
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.
|
<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.
|
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:
- İstekte statik değerlerle üç akış değişkeni oluşturur
- Akış değişkenlerini, istek akışındaki ikinci bir politikada dinamik olarak alır
- 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:
- İstek akışına 1. ve 2. politikaları ekleyin. 1. politikayı, 2. politikadan önce eklediğinizden emin olun.
- Üçüncü politikayı yanıt akışına ekleyin.
- Üçü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>
öğesinincontentType
özelliğini "application/xml" olarak ayarladığınızdan emin olun. - 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.
- Form verileri: Bir değere veya "" değerine (boş dize) ayarlayın. Örneğin,
Ö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">MyRequestObject</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 Politika "false" (yanlış) değerine ayarlanırsa politika şu iki yöntemden biriyle yanıt verir:
|
İ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.
|
İ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.
- Form verileri: Bir değere veya "" değerine (boş dize) ayarlayın. Örneğin,
<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 |
İ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çinsource
özelliğini belirtmeye gerek yoktur. - Özel mesajdaki
address
sorgu parametresini, gelen isteğinaddy
sorgu parametresinin değerine ayarlar. - HTTP fiili
GET
olarak ayarlar.
- Gelen istekten
<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, Mesaj türü değişkenleri, HTTP isteklerinin ve yanıtlarının tamamını temsil eder. Yerleşik Edge akış değişkenleri |
build |
steps.assignmessage.UnresolvedVariable |
500 |
Bu hata, Mesaj Ata politikasında belirtilen bir değişken aşağıdakilerden biriyse ortaya çıkar:
|
build |
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.
|
build |
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.
|
build |
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.