Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info
Ne?
AssignMessage politikası, API proxy akışı sırasında yeni istek ve yanıt mesajları oluşturur veya mevcut mesajları değiştirir. Politika, bu iletilerde aşağıdaki işlemleri yapmanıza olanak tanır:
- Bir iletiye yeni form parametreleri, üstbilgi veya sorgu parametresi ekleme
- Mevcut mülkleri bir mesajdan diğerine kopyalama
- Üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya ileti yüklerini bir iletiden kaldırın
- Bir mesajdaki mevcut özelliklerin değerini ayarlama
AssignMessage politikasıyla genellikle istek veya yanıtın özelliklerini ekler, değiştirir ya da 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şturmak ve bunu alternatif bir hedefe iletmek için AssignMessage politikasını da kullanabilirsiniz.
AssignMessage politikası, aşağıdaki alt öğelerle akış değişkenleri oluşturabilir veya değiştirebilir:
<AssignMessage>
öğesi
AssignMessage politikasını tanımlar.
Varsayılan Değer | Aşağıdaki Varsayılan Politika sekmesine bakın. |
Zorunlu mu? | Zorunlu |
Tür | Karmaşık nesne |
Üst Öğe | Yok |
Alt Öğeler |
<Add> <AssignTo> <AssignVariable> <Copy> <DisplayName> <IgnoreUnresolvedVariables> <Remove> <Set> |
<AssignMessage>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage>
öğesi şu söz dizimini kullanır:
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <!-- All AssignMessage child elements are optional --> <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Add> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> <AssignVariable> <Name>variable_name</Name> <Ref>source_variable</Ref> <Template>message_template</Template> or <Template ref='template_variable'></Template> <Value>variable_value</Value> </AssignVariable> <Copy source="[request|response]"> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>[false|true]</Path> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>[false|true]</ReasonPhrase> <StatusCode>[false|true]</StatusCode> <Verb>[false|true]</Verb> <Version>[false|true]</Version> </Copy> <DisplayName>policy_display_name</DisplayName> <IgnoreUnresolvedVariables>[true|false]</IgnoreUnresolvedVariables> <Remove> <!-- Can also be an empty array (<FormParams/>) --> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <!-- Can also be an empty array (<Headers/>) --> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Payload>[false|true]</Payload> <!-- Can also be an empty array (<QueryParams/>) --> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> </Remove> <Set> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <Headers> <Header name="header_name">header_value</Header> ... </Headers> <Path>path</Path> <Payload contentType="content_type" variablePrefix="prefix" variableSuffix="suffix">new_payload</Payload> <QueryParams> <QueryParam name="queryparam_name">queryparam_value</QueryParam> ... </QueryParams> <ReasonPhrase>reason_for_error or {variable}</ReasonPhrase> <StatusCode>HTTP_status_code or {variable}</StatusCode> <Verb>[GET|POST|PUT|PATCH|DELETE|{variable}]</Verb> <Version>[1.0|1.1|{variable}]</Verb> </Set> </AssignMessage>
Varsayılan Politika
Aşağıdaki örnekte, Edge kullanıcı arayüzünde akışınıza bir AssignMessage 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 AssignMessage politikası eklediğinizde şablon, tüm olası işlemler için şablonlar içerir. Genellikle bu politikayla hangi işlemleri yapmak istediğinizi seçer ve alt öğelerin geri kalanını kaldırırsınız. Örneğin, kopyalama işlemi yapmak istiyorsanız <Copy>
öğesini kullanın ve daha okunaklı hale getirmek için <Add>
, <Remove>
ve 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>
öğesinin alt öğelerinin üst düzey bir açıklaması verilmiştir:
Alt Öğe | Zorunlu mu? | Açıklama |
---|---|---|
Sık kullanılan işlemler | ||
<Add> |
İsteğe bağlı | <AssignTo> öğesi tarafından belirtilen bilgileri ileti nesnesine ekler.
|
<Copy> |
İsteğe bağlı | source özelliği tarafından belirtilen iletiden bilgileri <AssignTo> öğesi tarafından belirtilen ileti nesnesine kopyalar. |
<Remove> |
İsteğe bağlı | Belirtilen öğeleri <AssignTo> öğesinde belirtilen mesaj değişkeninden siler. |
<Set> |
İsteğe bağlı | İstekte veya yanıtta mevcut özelliklerin değerlerini değiştirir. Bu değerler <AssignTo> öğesi tarafından belirtilir.
|
Diğer alt öğeler | ||
<AssignTo> |
İsteğe bağlı | AssignMessage politikasının hangi iletiyi işlediğini belirtir. Bu, standart istek veya yanıt olabilir ya da yeni bir özel 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üme ulaştırılmamış bir değişkenle karşılaşıldığında işleme işleminin durdurulup durdurulmayacağını belirler. |
Bu alt öğelerin her biri sonraki bölümlerde açıklanmıştır.
Örnekler
Aşağıdaki örneklerde, AssignMessage politikasını kullanabileceğiniz bazı yöntemler gösterilmektedir:
1: Üstbilgi ekleyin
Aşağıdaki örnekte, <Add>
öğesini kullanarak isteğe bir üstbilgi eklenmiştir:
<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ünüzü kaldırın
Aşağıdaki örnekte, <Remove>
öğesi kullanılarak yanıttan yük silinmektedir:
<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 başlık ekleyerek nesne değiştirilmektedir:
<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 örnekte yeni bir ileti oluşturulmaz. Bunun yerine, HTTP üst bilgisi ekleyerek mevcut bir yanıt mesajını değiştirir.
Bu örnekte <AssignTo>
öğesinde bir değişken adı atlandığı ve type
"response" olarak belirtildiği için 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 üst bilgisi, LookupCache politikası tarafından doldurulan bir değişkenden türetilir. Bu nedenle, bu Mesaj Atama politikası tarafından değiştirilen yanıt mesajı, sonuçların önbellekten alınıp alınmadığını belirten bir HTTP üst bilgisi içerir. Yanıtta üstbilgi ayarlamak, hata ayıklama ve sorun giderme için yararlı olabilir.
4: Dinamik içerik ayarlama
Yanıt ve istek mesajlarının yüküne dinamik içerik yerleştirmek için Mesaj Ata'yı kullanabilirsiniz.
Edge akış değişkenlerini bir XML yükü içine yerleştirmek için, belirtilen değişkeni eğik çizgi içine alın: {prefix.name}
.
Aşağıdaki örnekte, user-agent
HTTP üstbilgisi 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 ayırıcı karakterlerle variablePrefix
ve variableSuffix
özelliklerini 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ı başlıklı makaleyi inceleyin.
16.08.17 tarihli bulut sürümü itibarıyla, değişken eklemek için köşeli parantezleri de kullanabilirsiniz.
5: Sorgu parametresini kaldırın
Aşağıdaki örnekte, apikey
sorgu parametresi istekten kaldırılmıştı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 kaldırmak en iyi uygulamadır. Bunu, hassas anahtar bilgilerinin arka uç hedefine iletilmesini önlemek için yaparsınız.
6: Değişken ayarlama/alma
Aşağıdaki örnekte üç Mesaj Ata politikaları kullanılmaktadır:
- İstekte statik değerlere sahip üç akış değişkeni oluşturur
- İstek akışında ikinci bir politikadaki akış değişkenlerini dinamik olarak alır
- Bunları yanıtın yükü olarak 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 politikadaki <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 referans verir ve <Name>
öğeleri yeni değişkenlerin adlarını belirtir. <Ref>
öğesinin referans verdiği değişkene erişilemezse <Value>
öğesinin belirttiği değeri kullanabilirsiniz.
Bu politika grubunu denemek için:
- 1. ve 2. politikaları istek akışına 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 örnekte, Edge'in istemciye döndürdüğü yanıtta bir XML yükü oluşturulmaktadır:<!-- 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 söz diziminde değişkenlerin kıvrık parantez içine alınması gerektiğini unutmayın.<Payload>
öğesinincontentType
özelliğini "application/xml" olarak ayarlayın. - 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ülenmesi için sonuçları
xmllint
gibi bir yardımcı program üzerinden aktarabilirsiniz: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çıklama metni yanıt başlıklarını alma
Aşağıdaki örnekte, API proxy isteğinde bir ServiceCallout politikasının olduğunu ve açıklama yanıtının aynı ada (Set-Cookie
) sahip birden fazla başlık içerdiğini varsayalım. Service Callout'ın yanıt değişkeninin varsayılan calloutResponse
olduğunu varsayarsak aşağıdaki politika ikinci Set-Cookie
üstbilgi 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 başlık değerlerini listelemek için bunun yerine 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'daki AssignMessage örneğine göz atın.
Alt öğe referansı
Bu bölümde, <AssignMessage>
öğesinin alt öğeleri açıklanmaktadır.
<Add>
İsteğe veya yanıta <AssignTo>
öğesi tarafından belirtilen bilgileri ekler.
<Add>
öğesi, iletiye orijinal iletide 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 istekteki üç 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
üstbilgisini 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 örnekte, istek ön akışında <Add>
kullanılmaktadır. İzleme aracı gibi bir araçtaki sonuçlara bakarsanız "http://httpbin.org/get" isteğinin "http://httpbin.org/get?myParam=42" şeklinde değiştiğini görürsünüz.
<Add>
alt öğeleri, mesaj şablonu olarak bilinen dinamik dize değiştirmeyi destekler.
<FormParams>
(<Add>
öğesinin alt öğesi)
İstek mesajına yeni form parametreleri ekler. Bu öğenin yanıt mesajı üzerinde hiçbir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğesi dizisi |
Üst Öğe |
<Add>
|
Alt Öğeler |
<FormParam> |
<FormParams>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <FormParams> <FormParam name="formparam_name">formparam_value</FormParam> ... </FormParams> <AssignTo createNew="[true|false]" transport="http" type="[request|response]">destination_variable_name</AssignTo> </Add> </AssignMessage>
1. Örnek
Aşağıdaki örnekte, isteğe tek bir form parametresi ("answer") ve statik bir değer ("42") eklenmiştir:
<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 örnekte, name
sorgu dizesi parametresinin değeri alınıp forma parametresi olarak isteğe eklenmektedir:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
Bu örnekte <AssignTo>
ile bir hedef belirtilmediğ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, kaynak istekteki sorgu dizesi parametrelerini 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övdesinde, başlangıçta sorgu dizesi parametreleri olarak iletilen URL olarak kodlanmış form verilerinin yer aldığını görürsünüz:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
<FormParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: POST
- Mesaj türü: İstek
- Aşağıdakilerden biri (veya her ikisi):
- Form verileri: Bir değere veya "" (boş dize) değerine ayarlanır. Örneğin,
curl
ile isteğinize-d ""
ekleyin. Content-Length
header: 0 olarak ayarlanır (orijinal istekte veri yoksa; aksi takdirde geçerli uzunluk, bayt cinsinden). Örneğin,curl
ile isteğinize-H "Content-Length: 0"
ekleyin.
- Form verileri: Bir değere veya "" (boş dize) değerine ayarlanır. Ö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
üst bilgisini "application/x-www-form-urlencoded" olarak ayarlar.
<Headers>
(<Add>
öğesinin alt öğesi)
<AssignTo>
öğesi tarafından belirtilen isteğe veya yanıta yeni başlıklar ekler.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <Header> öğesi dizisi |
Üst Öğe |
<Add>
|
Alt Öğeler |
<Header> |
<Headers>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Add> <Headers> <Header name="header_name">header_value</Header> ... </Headers> </Add> </AssignMessage>
1. Örnek
Aşağıdaki örnekte, user-agent
üstbilgisi istek mesajına eklenmiş ve request.user.agent
akış değişkeninin değeri bu üstbilgiye atanmıştı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>
<QueryParams>
(<Add>
öğesinin alt öğesi)
İsteğe yeni sorgu parametreleri ekler. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğesi 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 eklenmiş ve bu parametreye "42" değeri atanmıştı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>
öğesini 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. Bunları yanıtta ayarlamak hiçbir etki etmez.
Politikanızda boş bir sorgu parametresi dizisi tanımlarsanız (<Add><QueryParams/></Add>
) politika hiçbir sorgu parametresi eklemez. Bu, <QueryParams>
değerinin atlanması ile aynıdır.
<AssignTo>
AssignMessage politikasının hangi nesneyi işlediğini 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 istek veya yanıt nesnesi
Bazı durumlarda, AssignMessage politikasının etki ettiği nesneyi değiştiremeyeceğinizi unutmayın.
Örneğin, yanıta sorgu parametreleri (<QueryParams>
) veya form parametreleri (<FormParams>
) eklemek ya da mevcut parametreleri değiştirmek için <Add>
veya <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>
değerini belirtmezseniz politika, politikanın yürütüldüğü yere bağlı olarak varsayılan istek veya yanıt üzerinde işlem yapar. Politika istek akışında yürütülürse istek mesajını etkiler. Politika, yanıt akışında yürütülüyorsa 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 örnekte, hedefin hedef uç noktaya gönderilecek orijinal istek olduğu belirtilmektedir:
<AssignMessage name="assignto-1"> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Bu örnekte, createNew
"false" (varsayılan) olarak ayarlanarak yeni bir istek oluşturulmaz. Bu politikadaki tüm işlemler orijinal isteği etkiler.
2. Örnek
Aşağıdaki örnekte yeni bir istek nesnesi oluşturulmaktadır:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Yeni bir istek veya yanıt nesnesi oluşturduğunuzda, AssignMessage politikasının diğer öğeleri (ör. <Add>
, <Set>
ve <Set>
) bu yeni istek nesnesine göre hareket eder.
Akıştaki diğer politikalarda yeni istek nesnesine erişebilir veya yeni istek nesnesini ServiceCallout politikası olan harici bir hizmete gönderebilirsiniz.
3. Örnek
Aşağıdaki örnekte "MyRequestObject" adlı yeni bir istek nesnesi oluşturulmaktadır:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request">MyRequestObject</AssignTo> </AssignMessage>
Yeni bir istek veya yanıt nesnesi oluşturduğunuzda, AssignMessage politikasının diğer öğeleri (ör. <Add>
, <Set>
ve <Set>
) bu yeni istek nesnesine göre hareket eder.
Akıştaki diğer politikalarda yeni istek nesnesine erişebilir veya yeni istek nesnesini ServiceCallout politikası olan harici bir hizmete gönderebilirsiniz.
Aşağıdaki tabloda <AssignTo>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Zorunlu mu? | Tür |
---|---|---|---|
createNew |
Bu politikanın, değerler atarken yeni bir ileti oluşturup oluşturmayacağını belirler. "true" ise politika, "false" ise politika iki şekilde 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 (yalnızca desteklenen 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".
Varsayılan değer "request"dir. Bu özelliği atlarsanız Edge, bu politikanın akışın hangi yerinde yürütüldüğüne 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 AssignMessage politikası tarafından ayarlanan bir değişken) değer atar. Akış değişkeni mevcut değilse <AssignVariable>
tarafından oluşturulur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | Karmaşık türü |
Üst Öğe |
<AssignMessage>
|
Alt Öğeler |
<Name> (zorunludur)<Ref> <Template> <Value> |
Hedef akış değişkenine atadığınız değer aşağıdakilerden biri olabilir:
- Değişken dize: Hedef akış değişkeni için değişmez bir dize değeri belirtmek üzere
<Value>
alt öğesini kullanın. - Akış değişkeni: Hedef akış değişkeni için mevcut bir akış değişkeninin değerini belirtmek üzere
<Ref>
alt öğesini kullanın. Kaynak olarak kullanılabilen akış değişkenlerinin tam listesi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. - İleti şablonu: Hedef akış değişkeni için ileti ş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şilemezse Edge, <Value>
öğesi tarafından belirtilen değeri kullanır. <Template>
öğesini tanımlarsanız bu öğe diğer alt öğelere göre öncelikli olur.
1. Örnek
Aşağıdaki örnekte, yeni bir değişkenin (myvar
) değeri "42" literal değerine ayarlanmıştı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 hedef akış değişkeni myvar
'e, country
sorgu parametresinin değeri ise hedef akış değişkeni Country
'e 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>
Herhangi bir atama başarısız olursa Edge, hedef akış değişkenine "ErrorOnCopy" değerini atar.
myvar
veya Country
akış değişkenleri mevcut değilse bunları <AssignVariable>
oluşturur.
3. Örnek
Aşağıdaki örnekte, iki bağlam değişkenini aralarında bir değişmez 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>
, bir sorgu parametresi, başlık veya istekle birlikte iletilebilecek başka bir değer için varsayılan değer ayarlamak amacıyla yaygın olarak kullanılır. Bunu, hem <Ref>
hem de <Value>
alt öğelerinin bir birleşimiyle yapabilirsiniz. Daha fazla bilgi için <Ref>
örneklerine bakın.
<Name>
(<AssignVariable>
öğesinin alt öğesi)
Hedef akış değişkeninin adını belirtir (ör. değeri AssignMessage politikası tarafından ayarlanan değişken). <AssignVariable>
içinde belirtilen değişken mevcut değilse politika bu ada sahip bir değişken oluşturur.
Varsayılan Değer | Yok |
Zorunlu mu? | Zorunlu |
Tür | Dize |
Üst Öğe |
<AssignVariable>
|
Alt Öğeler | Yok |
<Name>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> </AssignVariable> </AssignMessage>
1. Örnek
Aşağıdaki örnekte hedef değişken myvar
olarak belirtilmiş ve "42" literal değerine ayarlanmıştır:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
myvar
mevcut değilse <AssignVariable>
tarafından oluşturulur.
<Ref>
(<AssignVariable>
öğesinin alt öğesi)
Atama kaynağını akış değişkeni olarak belirtir. Akış değişkeni, önceden tanımlanmış akış değişkenlerinden biri (Akış değişkenleri referansı bölümünde listelenenler) veya oluşturduğunuz özel bir akış değişkeni olabilir.
<Ref>
değeri her zaman akış değişkeni olarak yorumlanır; değer olarak bir değişmez dize belirtemezsiniz. Değişken olmayan bir 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>
ile bir akış değişkeni belirttiğinizde, normalde bir akış değişkenine referans vermek için kullanacağınız tırnak içine alınmış parantezleri ("{}") atlayı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 bir değer tanımlamak amacıyla <Ref>
ile birlikte <Value>
kullanın. <Ref>
ile belirtilen akış değişkeni mevcut değilse, okunamıyorsa veya null ise Edge, <Value>
değerini 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 hedef akış değişkeni myvar
'e, country
sorgu parametresinin değeri ise 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, iki atama için de varsayılan (veya yedek) bir değer belirtmemiştir.
2. Örnek
Aşağıdaki örnekte, request.header.user-agent
akış değişkeninin değeri hedef akış değişkeni myvar
'e, country
sorgu parametresinin değeri ise 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ş, okunamaz veya hatalı biçimlendirilmişse Edge, yeni değişkenlere "ErrorOnCopy" değerini atar.
3. Örnek
<AssignVariable>
için yaygın bir kullanım alanı, bir sorgu parametresinin, başlığın veya istekle birlikte iletilebilecek diğer 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 görmek istediğiniz şehrin kimliğini içerir. İstek URL'si şu biçimdedir:
http://myCO.com/v1/weather/forecastrss?w=city_ID
"w" için varsayılan bir değer tanımlamak üzere aşağıdaki gibi bir AssignMessage 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ır ve 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. Bu nedenle, bu API proxy'sine "w" sorgu parametresini atlayan bir istek gönderebilirsiniz:
http://myCO.com/v1/weather/forecastrss
...ve API proxy'sinin geçerli bir sonuç döndürmesini sağlayabilirsiniz.
<Value>
kullanılırken aksine, <Ref>
değeri bir akış değişkeni olmalıdır (ör. request
, response
veya target
nesnesinin bir özelliği). 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>
öğesinin alt öğesi)
Bir mesaj şablonunu belirtir. İleti şablonu, politika yürütüldüğünde değişken dize değiştirmenize olanak tanır ve değişmez dizeleri, küme parantezlerine alınmış değişken adlarıyla birleştirebilir. Ayrıca mesaj şablonları, kaçış ve büyük/küçük harf dönüştürme gibi işlevleri destekler.
Değişkenin değerinin bir mesaj şablonu olduğu bir akış değişkeni belirtmek için ref
özelliğini kullanın. Örneğin, bir mesaj şablonunu geliştirici uygulamasında özel özellik olarak saklayabilirsiniz. Edge, API anahtarını veya güvenlik jetonunu doğruladıktan sonra (ek bir politika aracılığıyla) geliştirici uygulamasını tanımladığında <AssignVariable>
öğesi, uygulamanın özel özelliğindeki mesaj şablonunu kullanabilir. Bu şablon, güvenlik politikasından bir akış değişkeni olarak kullanılabilir. Aşağıdaki örnekte, mesaj şablonunun API çağrısı yapan geliştirici uygulamasında message_template
adlı bir müşteri özelliğinde bulunduğu varsayılmaktadır. Bu uygulamada, uygulamanın API anahtarını doğrulamak için VerifyAPIKey politikası kullanı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 bağlam değişkenini araları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ğerinin önceden tanımlanmış bir mesaj şablonu olduğu bir akış değişkeni belirtilmektedir. Politikayı değiştirmek zorunda kalmadan önceden tanımlanmış bir şablonu çalışma zamanında 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 metin değeri belirtilmektedir. Bu durumda, referans verilen değişken boş değilse bu değer şablon olarak kullanılır. Referans verilen değer boşsa şablon olarak metin değeri (bu durumda {system.uuid}-{messageid}
) kullanılır. Bu kalıp, bazı durumlarda varsayılan şablonu (metin kısmı) dinamik olarak ayarlanan değerlerle geçersiz kılmak istediğiniz durumlarda bir "geçersiz kılma" değeri sağlamak için kullanışlıdır. Örneğin, koşullu bir ifade bir anahtar/değer haritasından değer alıp referans verilen 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>
öğesinin alt öğesi)
<AssignVariable>
ile ayarlanan hedef akış değişkeninin değerini tanımlar. Değer her zaman değişmez dize olarak yorumlanır; değeri paranteze ("{}") aldığınızda bile değer olarak akış değişkeni 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 |
<Ref>
öğesiyle birlikte kullanıldığında <Value>
, varsayılan (veya yedek) değer olarak işlev görür. <Ref>
belirtilmezse, çözülemezse veya null ise <Value>
değeri kullanılır.
<Value>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <AssignVariable> <Name>variable_name</Name> <Value>variable_value</Value> </AssignVariable> </AssignMessage>
1. Örnek
Aşağıdaki örnekte, hedef akış değişkeni myvar
'nin değeri "42" literal değerine ayarlanmıştı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, country
sorgu parametresinin değeri ise Country
değişkenine atanmaktadı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>
Herhangi bir atama başarısız olursa <AssignVariable>
, hedef akış değişkenine "ErrorOnCopy" değerini atar.
<Copy>
source
özelliğiyle belirtilen iletiden <AssignTo>
öğesiyle belirtilen iletiye kopyalar. <AssignTo>
ile bir hedef belirtmezseniz bu politika, akışın neresinde yürütüldüğüne 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 üstbilgi, üç form parametresi, yol ve tüm sorgu parametreleri istekten yeni bir özel 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 şu özelliklere sahiptir:
Özellik | Açıklama | Zorunlu mu? | Tür |
---|---|---|---|
source |
Kopyanın kaynak nesnesini belirtir.
|
İsteğe bağlı | Dize |
<FormParams>
(<Copy>
öğesinin alt öğesi)
<Copy>
öğesinin source
özelliği tarafından belirtilen istekteki form parametrelerini <AssignTo>
öğesi tarafından belirtilen isteğe kopyalar. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğesi 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, istekteki tek bir form parametresi "Özelİsteğim" adlı özel isteğe kopyalanıyor:
<AssignMessage name="copy-formparams-1"> <Copy source="request"> <FormParams> <FormParam name="paramName">Form param value 1</FormParam> </FormParams> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
2. Örnek
Aşağıdaki örnekte, tüm form parametreleri "Özelİsteğim" adlı özel isteğe 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, üç form parametresi "Özelİsteğim" adlı özel isteğe kopyalanı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" işlevinin ikinci değeri kopyalanır. "f3" yalnızca bir değere sahipse kopyalanmaz.
<FormParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: POST
- Mesaj türü: Yanıt
- Aşağıdakilerden biri (veya her ikisi):
- Form verileri: Bir değere veya "" (boş dize) değerine ayarlanır. Örneğin,
curl
ile isteğinize-d ""
ekleyin. Content-Length
başlığı: 0 olarak ayarlanır (orijinal istekte veri yoksa; aksi takdirde geçerli uzunluk). Örneğin,curl
ile isteğinize-H "Content-Length: 0"
ekleyin.
- Form verileri: Bir değere veya "" (boş dize) değerine ayarlanır. Örneğin,
<FormParams>
öğesini kopyaladığınızda <Copy>
, mesajı hedef hizmete göndermeden önce mesajın Content-Type
değerini "application/x-www-form-urlencoded" olarak ayarlar.
<Headers>
(<Copy>
öğesinin alt öğesi)
<Copy>
öğesinin source
özelliği tarafından belirtilen istek veya yanıt mesajındaki 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> öğesi 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, istekteki user-agent
üst bilgisi yeni ve ö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 başlıkları 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 başlık 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 kopyalanır. "h3" yalnızca bir değere sahipse kopyalanmaz.
<Path>
(<Copy>
öğesinin alt öğesi)
Yolun kaynak istekten hedef isteğine kopyalanıp kopyalanmayacağını belirler. Bu öğenin yanıt üzerinde bir etkisi yoktur.
"Doğru" ise bu politika, <Copy>
öğesinin source
özelliği tarafından belirtilen istek mesajından <AssignTo>
öğesi tarafından belirtilen istek mesajına yolu kopyalar.
Varsayılan Değer | Yanlış |
Zorunlu mu? | İsteğe bağlı |
Tür | Boole |
Üst Öğe |
<Copy>
|
Alt Öğeler | Yok |
<Path>
öğesi şu söz dizimini kullanır:
Söz dizimi
<AssignMessage continueOnError="[false|true]" enabled="[true|false]" name="policy_name" > <Copy source="[request|response]"> <Path>[false|true]</Path> </Copy> </AssignMessage>
1. Örnek
Aşağıdaki örnekte, AssignMessage politikasının kaynak istekteki yolu yeni, özel istek nesnesine kopyalaması gerektiği belirtilmektedir:
<AssignMessage name="copy-path-1"> <Copy source="request"> <Path>true</Path> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
<Path>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
<Payload>
(<Copy>
öğesinin alt öğesi)
Yükün kaynaktan hedefe kopyalanıp kopyalanmayacağını belirler. Kaynak ve hedef, istek veya yanıt olabilir.
"true" ise bu politika, <Copy>
öğesinin source
özelliğinde belirtilen iletiden gelen yük verisini <AssignTo>
öğesinde belirtilen ilete 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, istek yükü istekten yanıta kopyalanacağı için <Payload>
"true" olarak ayarlanmıştır:
<AssignMessage name="copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<QueryParams>
(<Copy>
öğesinin alt öğesi)
Sorgu dizesi parametrelerini <Copy>
öğesinin source
özelliği tarafından belirtilen istek ile <AssignTo>
öğesi tarafından belirtilen istek arasında kopyalar. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğesi 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ıyor:
<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 bir özel 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 "qp3"ün ikinci değeri kopyalanır. "qp3" parametresinin yalnızca bir değeri varsa kopyalanmaz.
<QueryParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: GET
- Mesaj türü: İstek
<ReasonPhrase>
(<Copy>
öğesinin alt öğesi)
Neden ifadesinin kaynak yanıttan hedef yanıta kopyalanıp kopyalanmayacağını belirler. Bu öğenin istek üzerinde bir etkisi yoktur.
"true" ise bu politika, <Copy>
öğesinin source
özelliği tarafından belirtilen yanıttan ReasonPhrase
öğesini kopyalayarak <AssignTo>
öğesi tarafından belirtilen yanıta yerleştirir.
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>
"true" olarak ayarlanmıştır. Bu, <Copy>
'un varsayılan yanıttaki neden ifadesini ö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>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<StatusCode>
(<Copy>
öğesinin alt öğesi)
Durum kodunun kaynak yanıttan hedef yanıta kopyalanıp kopyalanmayacağını belirler. Bu öğenin istek üzerinde bir etkisi yoktur.
"Doğru" ise bu politika, <Copy>
öğesinin source
özelliğinde belirtilen yanıt mesajındaki durum kodunu <AssignTo>
öğesinde belirtilen yanıt mesajına kopyalar.
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>
"true" olarak ayarlanmıştır. Bu ayar, varsayılan yanıt nesnesinden yeni bir özel yanıt nesnesine durum kodunu kopyalar:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
<StatusCode>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<StatusCode>
, <AssignTo>
'nin createNew
özelliği "true" olarak ayarlandığında proxy yanıtının hedeften alınan yanıtla aynı durumda olmasını sağlamak için yaygın olarak kullanılır.
<Verb>
(<Copy>
öğesinin alt öğesi)
HTTP fiilinin kaynak istekten hedef isteğine kopyalanıp kopyalanmadığını belirler. Bu öğenin yanıt üzerinde bir etkisi yoktur.
"true" ise <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>
"true" olarak ayarlanır. Bu, fiili varsayılan istek yerine yeni bir özel isteğe kopyalar:
<AssignMessage name="copy-verb-1"> <Copy source="request"> <Verb>true</Verb> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
<Verb>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
<Version>
(<Copy>
öğesinin alt öğesi)
HTTP sürümünün kaynak istekten hedef isteğine kopyalanıp kopyalanmadığını belirler. Bu öğenin yanıt üzerinde bir etkisi yoktur.
"true" ise <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, <Version>
istekte "true" olarak ayarlanır. Bu, sürümü varsayılan istek nesnesinden yeni bir özel istek nesnesine kopyalar:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
<Version>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
<DisplayName>
Yönetim kullanıcı arayüzü proxy düzenleyicisinde politikayı farklı ve daha doğal bir adla etiketlemek için name
özelliğine ek olarak kullanın.
<DisplayName>
öğesi tüm politikalar için ortaktır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı. <DisplayName> öğesini atlarsanı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üme ulaştırılmamış bir değişkenle karşılaşıldığında işleme işleminin durdurulup durdurulmayacağını belirler.
Varsayılan Değer | Yanlış |
Zorunlu mu? | İsteğe bağlı |
Tür | Boole |
Üst Öğe |
<AssignMessage>
|
Alt Öğeler | Yok |
Çözüme ulaştırılmayan değişkenleri yoksaymak ve işlemeye devam etmek için true
olarak ayarlayın. Aksi takdirde false
değerini kullanın. Varsayılan değer: false
.
<IgnoreUnresolvedVariables>
değerini true
olarak ayarlamak, <AssignMessage>
'ın continueOnError
değerini true
olarak ayarlamaktan farklıdır. Bu işlem, değişkenlerin değerlerini ayarlamaya ve almaya özeldir. continueOnError
değerini true
olarak ayarladığınızda 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>
"true" olarak ayarlanmıştır:
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
Üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya ileti yükünü bir iletiden kaldırır. İleti, istek veya yanıt olabilir. <Remove>
öğesinin hangi mesaj üzerinde işlem yapacağını <AssignTo>
öğesini kullanarak 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>
'ün yaygın bir kullanım alanı, arka uç sunucuya iletilmesini önlemek için gelen istek nesnesinden hassas bilgiler içeren bir sorgu parametresini silmektir.
<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 örnekte, mesajın gövdesi yanıttan kaldırılmıştı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 üstbilgilerini döndürür.
2. Örnek
Aşağıdaki örnekte, gelen istekteki tüm form parametreleri ve bir sorgu parametresi kaldırılmaktadı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>
öğesinin alt öğesi)
Belirtilen form parametrelerini istekten kaldırır. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğesi 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, istekteki üç form parametresi kaldırılmıştı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 örnekte, istekteki tüm form parametreleri kaldırılmıştı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ılmıştır. "f3" yalnızca bir değere sahipse kaldırılmaz.
<FormParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
Content-Type
: "application/x-www-form-urlencoded"
<Headers>
(<Remove>
öğesinin alt öğesi)
<AssignTo>
öğesi tarafından belirtilen istek veya yanıttan belirtilen HTTP üstbilgilerini kaldırır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <Header> öğesi 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 örnekte, user-agent
üstbilgisi istekten kaldırılmıştı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 örnekte, istekteki tüm üstbilgiler kaldırılmaktadır:
<AssignMessage name="remove-headers-2"> <Remove> <Headers/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
3. Örnek
Aynı ada sahip birden fazla başlık 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 örnekte, istekteki "h1", "h2" ve "h3"ün ikinci değeri kaldırılmıştır. "h3" yalnızca bir değere sahipse kaldırılmaz.
<Payload>
(<Remove>
öğesinin alt öğesi)
<Remove>
'ün, <AssignTo>
öğesi tarafından belirtilen istek veya yanıttaki yükü silip silmeyeceğini belirler. Yükün temizlenmesi için "true", aksi takdirde "false" olarak ayarlanır. 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ü temizlensin diye <Payload>
"true" olarak ayarlanmıştır:
<AssignMessage name="remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
(<Remove>
öğesinin alt öğesi)
Belirtilen sorgu parametrelerini istekten kaldırır. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğesi 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 örnekte, istekteki tek bir sorgu parametresi kaldırılmaktadı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 örnekte, istekten tüm sorgu parametreleri kaldırılmıştı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ılmıştır. "qp3" parametresinin yalnızca bir değeri varsa parametre kaldırılmaz.
4. Örnek
Aşağıdaki örnekte, apikey
sorgu parametresi istekten kaldırılmıştır:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: GET
- Mesaj türü: İstek
<Set>
İstekte veya yanıt mesajında, <AssignTo>
öğesi tarafından belirtilen bilgileri ayarlar. <Set>
, orijinal iletide zaten mevcut olan üstbilgilerin veya parametrelerin üzerine yazar. Yeni bir başlık 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>
öğesinin alt öğesi)
Bir istekteki mevcut form parametrelerinin üzerine yazar ve bu öğeyle belirttiğiniz yeni değerlerle değiştirir. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğesi 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 ve özel bir istekteki request.header.myparam
değişkeninin değerine ayarlanmıştı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>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: POST
- Mesaj türü: İstek
Politikanızda boş form parametreleri tanımlarsanız (<Add><FormParams/></Add>
) politika hiçbir form parametresi eklemez. Bu, <FormParams>
değerini atlamayla 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>
öğesinin alt öğesi)
<AssignTo>
öğesi tarafından belirtilen istek veya yanıttaki mevcut HTTP üst bilgilerinin üzerine yazar.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <Header> öğesi 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
başlığı request.header.user-agent
değişkeninin değerine ayarlanmıştır:
<AssignMessage name="set-headers-1"> <Set> <Headers> <Header name="user-agent">{request.header.user-agent}</Header> </Headers> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
Politikanızda boş başlıklar (<Add><Headers/></Add>
) tanımlarsanız politika hiçbir başlık eklemez. Bu, <Headers>
değerini atlamayla aynıdır.
<Path>
(<Set>
öğesinin alt öğesi)
<Payload>
(<Set>
öğesinin alt öğesi)
Bir istek veya yanıtın mesaj gövdesini tanımlar. Bu gövde, <AssignTo>
öğesi tarafından belirtilir. 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 düz metin yükü ayarlanmıştır:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
2. Örnek
Aşağıdaki örnekte bir JSON yükü ayarlanmaktadır:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
3. Örnek
Aşağıdaki örnekte, değişken adları süslü ayraç içine alınarak değişken değerleri yüke eklenmektedir:
<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 (ör. 16.08.17 bulut sürümünden önce) JSON yükündeki değişken referanslarını belirtmek için kıvrık köşeli parantez kullanamazdınız. Bu sürümlerde, ayırıcı karakterleri belirtmek için variablePrefix
ve variableSuffix
özelliklerini, değişken adlarını sarmalamak için de bunları kullanmanız gerekiyordu. Örneğin:
<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â kullanılabilir.
4. Örnek
<Payload>
içeriği, ileti şablonu olarak kabul edilir. Bu, AssignMessage politikasının, paranteze alınmış değişkenleri çalışma zamanında referans verilen değişkenlerin değeriyle değiştirdiği anlamına gelir.
Aşağıdaki örnekte, yükün bir kısmını değişken değere ayarlamak için kıvrık köşeli parantez söz dizimi kullanılmaktadı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>
öğesinin özellikleri açıklanmaktadır:
Özellik | Açıklama | Varlık | Tür |
---|---|---|---|
contentType |
Belirtilirse |
İsteğe bağlı | Dize |
variablePrefix |
İsteğe bağlı olarak, akış değişkenindeki ön ayırıcıyı belirtir. Varsayılan olarak "{" değerini alır. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. | İsteğe bağlı | Char |
variableSuffix |
İsteğe bağlı olarak, akış değişkenindeki son ayırıcıyı belirtir. Varsayılan olarak "}" değerini alır. Daha fazla bilgi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. | İsteğe bağlı | Char |
<QueryParams>
(<Set>
öğesinin alt öğesi)
İstekteki mevcut sorgu parametrelerinin üzerine yeni değerler yazar. Bu öğenin yanıt üzerinde bir etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğesi 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 ayarlanmıştır:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
<QueryParams>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: GET
- Mesaj türü: İstek
Politikanızda boş sorgu parametreleri tanımlarsanız (<Set><QueryParams/></Set>
) politika hiçbir sorgu parametresi belirlemez. Bu, <QueryParams>
değerinin atlanması ile aynıdır.
<ReasonPhrase>
(<Set>
öğesinin alt öğesi)
Yanıtta neden ifadesini ayarlar. Bu işlem genellikle <StatusCode>
ile birlikte hata ayıklama amacıyla yapılır. Bu öğenin istek üzerinde 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ği, ileti şablonu olarak kabul edilir. Bu, süslü paranteze alınmış bir değişken adının, aşağıdaki örnekte gösterildiği gibi çalışma zamanında atıfta bulunulan 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>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<StatusCode>
(<Set>
öğesinin alt öğesi)
Yanıtta durum kodunu ayarlar. Bu öğenin istek üzerinde bir etkisi yoktur.
Varsayılan Değer | '200' (<AssignTo> 'nin 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 ayarlanmıştır:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
2. Örnek
<StatusCode>
içeriği, ileti şablonu olarak kabul edilir. Bu, süslü paranteze alınan bir değişken adının, aşağıdaki örnekte gösterildiği gibi çalışma zamanında atıfta bulunulan 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>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<Verb>
(<Set>
öğesinin alt öğesi)
İstekte HTTP fiili ayarlar. Bu öğenin yanıt üzerinde bir 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 ayarlanmıştır:
<AssignMessage name="set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
2. Örnek
<Verb>
içeriği, ileti şablonu olarak kabul edilir. Bu, köşeli paranteze alınan 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.
Aşağıdaki örnekte, bir fiili doldurmak için bir değişken kullanılmaktadır:
<AssignMessage name="set-verb-2"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
<Verb>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
<Version>
(<Set>
öğesinin alt öğesi)
Bir istekteki HTTP sürümünü ayarlar. Bu öğenin yanıt üzerinde bir 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 ayarlanmıştı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öşeli parantez içinde bir değişken kullanılmaktadır:
<AssignMessage name="set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
<Version>
içeriği, ileti şablonu olarak kabul edilir. Bu, köşeli paranteze alınan 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.
<Version>
öğesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
Özel istek mesajları oluşturma
Özel istek mesajı oluşturmak için AssignMessage politikasını kullanabilirsiniz. Özel istek oluşturduktan sonra bu isteği aşağıdaki şekillerde kullanabilirsiniz:
- Diğer politikalardaki değişkenlerine erişme
- Harici bir hizmete aktarma
Özel istek mesajı oluşturmak için AssignMessage politikanızdaki <AssignTo>
öğesini kullanın. createNew
değerini "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>
Edge, varsayılan olarak özel istek mesajıyla hiçbir işlem yapmaz. Edge, bunu oluşturduktan 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 örneklerde özel istek mesajları oluşturulmaktadır:
1. Örnek
Aşağıdaki örnekte, Mesaj Ata özelliği kullanılarak özel bir istek nesnesi oluşturulmaktadır:
<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 örnekte:
- "Özelİsteğim" adlı yeni bir istek mesajı nesnesi oluşturur.
- Bu politika, MyCustomRequest'te:
- Gelen istekteki
user-agent
HTTP başlığının değerini yeni mesaja kopyalar.<Copy>
,user-agent
akış değişkenine mutlak referans kullandığından<Copy>
içinsource
özelliğini belirtmeniz gerekmez. - Özel mesajdaki
address
sorgu parametresini, gelen isteğinaddy
sorgu parametresinin değerine ayarlar. - HTTP fiilini
GET
olarak ayarlar.
- Gelen istekteki
<IgnoreUnresolvedVariables>
değerini "false" olarak ayarlar.<IgnoreUnresolvedVariables>
"false" olduğunda, politikanın eklemeye çalıştığı değişkenlerden biri mevcut değilse Edge, API akışında işlemeyi durdurur.
2. Örnek
Aşağıda, AssignMessage ile özel istek nesnesi oluşturmayı 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 örnekte "partner.request" adlı yeni bir özel istek oluşturulur. Ardından yeni istek için <Verb>
ve <Payload>
değerlerini ayarlar.
Akışta daha sonra gerçekleşen başka bir AssignMessage politikasında özel istek mesajına erişebilirsiniz. Aşağıdaki örnekte, özel istek mesajının user-agent
başlığının değeri alını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
AssignMessage politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.
Video | Açıklama |
---|---|
Mesaj Politikası Neden Atanmalıdır? | Arka uç kodunu değiştirmeden API isteğini veya yanıtını değiştirmek için AssignMessage politikasının kullanılmasının avantajları hakkında bilgi edinin. |
AssignMessage politikasını kullanarak API öğelerini kopyalama | Bir API isteğinde veya yanıtında öğeleri kopyalayın ve AssignMessage politikasını kullanarak yeni bir istek veya yanıt nesnesi oluşturun. |
AssignMessage politikasını kullanarak API öğelerini kaldırma | AssignMessage politikasını kullanarak API öğelerini kaldırın ve API'yi hedef arka uca ulaşmadan önce değiştirin. |
AssignMessage politikasını kullanarak API öğeleri ekleme ve ayarlama | AssignMessage politikasını kullanarak sorgu parametreleri, üstbilgi, form parametreleri veya yük eklemek suretiyle API isteğini ya da yanıtını değiştirin. |
AssignMessage politikasını kullanarak özel değişkenler oluşturma | AssignMessage politikasını kullanarak özel akış değişkenleri ayarlayın ve API proxy'sindeki diğer politikalardaki değişkenlerden yararlanın. |
AssignMessage politikasını kullanarak yeni istek veya yanıt nesneleri oluşturma | API çalışma zamanında AssignMessage politikasını kullanarak yeni API istek veya yanıt nesneleri oluşturun. |
AssignMessage politikasını kullanarak sahte bir API oluşturma | Yanıt akışına AssignMessage politikasını ekleyerek basit bir REST API simülasyonu oluşturun. |
AssignMessage politikasını kullanarak yükü ayarlama veya değiştirme | API çalışma zamanında AssignMessage politikasını kullanarak SOAP yükü ayarlayarak REST isteğini SOAP isteğine dönüştürün. |
Hata kodları
Bu bölümde, döndürülen hata kodları ve hata mesajları ile bu politika bir hata tetiklediğinde Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiler, hataları ele almak için hata kuralları geliştiriyorsanız bilinmesi önemlidir. Daha fazla bilgi edinmek için Politika hataları hakkında bilmeniz gerekenler ve Hataları ele alma başlıklı makaleleri inceleyin.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.assignmessage.SetVariableFailed |
500 | Politika bir değişken ayarlayamadı. Çözümlenmemiş değişkenin adı için hata dizesine bakın. | |
steps.assignmessage.VariableOfNonMsgType |
500 |
Bu hata, 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 Atama politikasında belirtilen bir değişken aşağıdaki durumlarda oluşur:
|
build |
Dağıtım hataları
Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.
Hata adı | Neden | Düzelt |
---|---|---|
InvalidIndex |
Mesaj Atama politikasının <Copy> ve/veya <Remove> öğelerinde belirtilen dizin 0 veya negatif bir sayıysa API Proxy'nin dağıtımı başarısız olur.
|
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 yük geçersiz. |
Hata değişkenleri
Bu değişkenler, politika çalışma zamanında bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler başlıklı makaleyi inceleyin.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "UnresolvedVariable" |
assignmessage.policy_name.failed |
policy_name, hatayı atan politikanın kullanıcı tarafından belirtilen adıdır. | assignmessage.AM-SetResponse.failed = true |
Örnek hata yanıtı
{ "fault":{ "detail":{ "errorcode":"steps.assignmessage.VariableOfNonMsgType" }, "faultstring":"AssignMessage[AM-SetResponse]: value of variable is not of type Message" } }
Örnek hata kuralı
<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="Assign Message Faults"> <Step> <Name>AM-CustomNonMessageTypeErrorResponse</Name> <Condition>(fault.name Matches "VariableOfNonMsgType") </Condition> </Step> <Step> <Name>AM-CustomSetVariableErrorResponse</Name> <Condition>(fault.name = "SetVariableFailed")</Condition> </Step> <Condition>(assignmessage.failed = true) </Condition> </FaultRule>
Şemalar
Her politika türü bir XML şemasıyla (.xsd
) tanımlanır. Referans olarak kullanabileceğiniz politika şemalarını GitHub'da bulabilirsiniz.
İlgili konular
AssignMessage politikasının çalışma örneklerini API Platform örnekleri bölümünde bulabilirsiniz.
ProxyEndpoint'ten target.url
değerinin nasıl geçersiz kılınacağına dair daha gelişmiş bir örnek için bu Apigee Topluluğu makalesine göz atın.
ServiceCallout politikasında "set path" işlevinin nasıl kullanıldığını görmek için Apigee GitHub örneklerindeki bu Öğrenirken uygulayın örneğine göz atın. Depoyu klonlamanız ve ilgili konudaki talimatları uygulamanız yeterlidir. Örnekte, istek yolu ayarlamak için AssignMessage politikası, ardından harici bir hizmete istek göndermek için Hizmet Açıklaması politikası kullanılır.