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 olanları değiştirir. Bu politika, söz konusu iletilerde aşağıdaki işlemleri yapmanıza olanak tanır:
- İletiye yeni form parametreleri, üstbilgiler veya sorgu parametreleri ekleme
- Mevcut özellikleri bir mesajdan diğerine kopyalama
- Bir iletiden üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya ileti yüklerini kaldırma
- Bir mesajdaki mevcut özelliklerin değerini ayarlama
AssignMessage politikasıyla genellikle isteğin 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şturup 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 bunları değiştirebilir:
<AssignMessage>
öğesi
AssignMessage politikasını tanımlar.
Varsayılan Değer | Aşağıdaki Varsayılan Politika sekmesini inceleyin. |
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ğinizdeki 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, olası tüm işlemler için saplar içerir. Genellikle bu politikayla hangi işlemleri yapmak istediğinizi seçer ve geri kalan alt öğeleri kaldırırsınız. Örneğin, bir kopyalama işlemi yapmak istiyorsanız <Copy>
öğesini kullanın ve politikayı daha okunabilir 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 öğeleriyle ilgili genel bir açıklama verilmektedir:
Alt öğe | Zorunlu mu? | Açıklama |
---|---|---|
Sık kullanılan işlemler | ||
<Add> |
İsteğe bağlı | <AssignTo> öğesiyle belirtilen ileti nesnesine bilgi ekler.
|
<Copy> |
İsteğe bağlı | source özelliğiyle belirtilen iletideki bilgileri <AssignTo> öğesiyle belirtilen ileti 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 değerlerini, <AssignTo> öğesiyle belirtilen değerlerle değiştirir.
|
Diğer alt öğeler | ||
<AssignTo> |
İsteğe bağlı | AssignMessage politikasının hangi ileti üzerinde çalıştığını belirtir. Bu, standart istek veya yanıt ya da yeni bir özel mesaj olabilir. |
<AssignVariable> |
İsteğe bağlı | Bir akış değişkenine değer atar. Değişken yoksa <AssignVariable> tarafından oluşturulur. |
<IgnoreUnresolvedVariables> |
İsteğe bağlı | Çözümlenmemiş bir değişkenle karşılaşıldığında işlemenin 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>
öğesiyle isteğe bir başlık eklenmektedir:
<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 örnekte, <Remove>
öğesiyle yanıttaki yük silinir:
<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ştirme
Aşağıdaki örnekte, mevcut bir yanıt nesnesine başlık eklenerek 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 değişken adı atlandığı ve type
"yanıt" 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 çekilip çekilmediğini belirten bir HTTP üst bilgisi içerir. Yanıt başlıklarını ayarlamak, hata ayıklama ve sorun giderme için kullanışlı olabilir.
4. adım: Dinamik içeriği ayarlayın
Yanıt ve istek mesajlarının yüküne dinamik içerik yerleştirmek için Assign Message'ı kullanabilirsiniz.
Edge akışı değişkenlerini bir XML yüküne yerleştirmek için belirlenen değişkeni süslü parantez içine alın (ör. {prefix.name}
).
Aşağıdaki örnekte, user-agent
HTTP üstbilgisi akış değişkeninin değeri User-agent
adlı bir XML öğesine yerleştirilmektedir:
<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üklerinde, aşağıdaki örnekte gösterildiği gibi sınırlayı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.
Cloud sürümü 16.08.17'den itibaren değişken eklemek için küme parantezlerini de kullanabilirsiniz.
5: Sorgu parametresini kaldırma
Aşağıdaki örnekte, apikey
sorgu parametresi istekten kaldırılıyor:
<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ırmanız en iyi uygulamadır. Bunu, hassas anahtar bilgilerinin arka uç hedefine iletilmesini önlemek için yaparsınız.
6: Değişkenleri ayarlama/alma
Aşağıdaki örnekte üç Assign Message politikası kullanılmaktadır:
- İstek içinde statik değerlere sahip üç akış değişkeni oluşturur.
- İstek akışındaki ikinci bir politikada akış değişkenlerini dinamik olarak alır.
- Bunları yanıtın 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ı belirtir ve <Value>
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 verirken <Name>
öğeleri yeni değişkenlerin adlarını belirtir. <Ref>
öğesi tarafından referans verilen değişkene erişilemiyorsa <Value>
öğesi tarafından belirtilen değeri kullanabilirsiniz.
Bu politika grubunu denemek için:
- 1. ve 2. politikaları istek akışına ekleyin. 1 numaralı politikayı 2 numaralı politikadan önce yerleştirdiğinizden emin olun.
- Yanıt akışına üçüncü politikayı ekleyin.
- Üçüncü politika, yanıtı değişkenlerle doldurmak 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>
'da akış değişkenlerine erişmek için söz diziminin değişkenleri küme ayraçları 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, sonuçları
xmllint
gibi bir yardımcı programdan geçirerek XML'nin düzgün biçimlendirilmiş bir yapıda gösterilmesini sağ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çıklama metni yanıtı başlıklarını alma
Aşağıdaki örnekte, API proxy isteğinde bir ServiceCallout politikası olduğunu ve callout yanıtının aynı ada sahip birden fazla başlık (Set-Cookie
) içerdiğini varsayalım. Service Callout'un yanıt değişkeninin varsayılan calloutResponse
olduğunu varsayarsak aşağıdaki politika, ikinci Set-Cookie
başlık 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 öğe için ek örnekler verilmiştir. Daha fazla örnek için GitHub'daki AssignMessage örneğine bakın.
Alt öğe referansı
Bu bölümde, <AssignMessage>
öğesinin alt öğeleri açıklanmaktadır.
<Add>
İsteğe veya yanıta, <AssignTo>
öğesiyle belirtilen bilgileri ekler.
<Add>
öğesi, 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 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
ü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ğer içeren 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 öncesi akışta <Add>
kullanılmaktadır. İzleme aracı gibi bir araçtaki sonuçlara bakarsanız "http://httpbin.org/get" isteği "http://httpbin.org/get?myParam=42" olur.
<Add>
alt öğeleri, mesaj şablonu oluşturma olarak bilinen dinamik dize değiştirme özelliğini 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> öğ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 örnekte, isteğe tek bir form parametresi ("answer") ve statik bir değer ("42") ekleniyor:
<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ır ve isteğe form parametresi olarak eklenir:
<AssignMessage continueOnError="false" enabled="true" name="add-formparams-2"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> </AssignMessage>
Bu örnekte <AssignTo>
ile hedef belirtilmediğini unutmayın. Bu politika, isteğe yalnızca
parametresini ekler.
3. Örnek
Aşağıdaki örnekte, isteğe birden fazla form parametresi ekleniyor:
<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 isteğinden alır ve bunları 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 olarak kodlanmış form verilerini içerdiğini görürsünüz:
%7Busername%7D=nick&%7Bzip_code%7D=90210&%7Bdefault_language%7D=en
<FormParams>
simgesini 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) olarak ayarlanır. Örneğin,
curl
ile-d ""
isteğinize ekleyin. Content-Length
üstbilgisi: 0 olarak ayarlayın (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) olarak 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
üstbilgisini "application/x-www-form-urlencoded" olarak ayarlar.
<Headers>
(<Add>
öğesinin alt öğesi)
<AssignTo>
öğesiyle belirtilen istek veya yanıta yeni başlıklar 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 örnekte, istek iletisine user-agent
üstbilgisi eklenir ve request.user.agent
akış değişkeninin değeri bu üstbilgiye atanı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 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 ekleniyor ve bu parametreye "42" değeri atanıyor:
<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>
simgesini 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ıt üzerinde ayarlamanın bir etkisi yoktur.
Politikanızda boş bir sorgu parametreleri dizisi tanımlarsanız (<Add><QueryParams/></Add>
), politika herhangi bir sorgu parametresi eklemez. Bu, <QueryParams>
öğesini atlamayla aynıdır.
<AssignTo>
AssignMessage 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, AssignMessage politikasının etkilediği nesneyi değiştiremeyeceğinizi unutmayın.
Örneğin, yanıttaki sorgu parametrelerini (<QueryParams>
) veya form parametrelerini (<FormParams>
) eklemek ya da değiştirmek için <Add>
veya <Set>
kullanamazsınız. Yalnızca istekteki 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>
belirtmezseniz politika, varsayılan istek veya yanıt üzerinde işlem yapar.
Bu, politikanın yürütüldüğü yere bağlıdır. 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 ö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 ayarlandığı için 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şturuluyor:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Yeni bir istek veya yanıt nesnesi oluşturduğunuzda AssignMessage politikası politikasının diğer öğeleri (ör. <Add>
, <Set>
ve <Set>
) bu yeni istek nesnesi üzerinde işlem yapar.
Akışın ilerleyen aşamalarında diğer politikalarda yeni istek nesnesine erişebilir veya yeni istek nesnesini ServiceCallout politikası ile harici bir hizmete gönderebilirsiniz.
3. Örnek
Aşağıdaki örnekte "MyRequestObject" adlı yeni bir istek nesnesi oluşturuluyor:
<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ı politikasının diğer öğeleri (ör. <Add>
, <Set>
ve <Set>
) bu yeni istek nesnesi üzerinde işlem yapar.
Akışın ilerleyen aşamalarında diğer politikalarda yeni istek nesnesine erişebilir veya yeni istek nesnesini ServiceCallout politikası ile 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ğer atarken yeni bir ileti oluşturup oluşturmayacağını belirler. "Doğru" ise politika, "Yanlış" 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 (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"tir. Bu özelliği atlarsanız Edge, bu politikanın akışta yürütüldüğü yere 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 yoksa <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> (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 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ılabilecek akış değişkenlerinin tam listesi için Akış değişkenleri referansı başlıklı makaleyi inceleyin. - 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şkenini 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, yeni bir değişkenin değeri, myvar
, değişmez değer "42" olarak ayarlanır:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
2. Örnek
Aşağıdaki örnekte, akış değişkeni request.header.user-agent
'nın değeri hedef akış değişkeni myvar
'ye, sorgu parametresi country
'nin 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>
İki atamadan biri 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 değişmez bir 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>
, genellikle bir sorgu parametresi, başlık veya istekle birlikte iletilebilen başka bir değer için varsayılan değer ayarlamak amacıyla kullanılır. Bunu, <Ref>
ve <Value>
alt öğelerinin bir kombinasyonuyla yapabilirsiniz. Daha fazla bilgi için <Ref>
ile ilgili örneklere 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 adı belirtilen değişken yoksa politika, bu adla 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 belirtilir ve bu değişken, değişmez değer "42" olarak ayarlanır:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
myvar
yoksa <AssignVariable>
tarafından oluşturulur.
<Ref>
(<AssignVariable>
öğesinin alt öğesi)
Atamanın kaynağını akış değişkeni olarak belirtir. Akış değişkeni, önceden tanımlanmış akış değişkenlerinden (Akış değişkenleri referansı bölümünde listelenmiştir) biri veya oluşturduğunuz özel bir akış değişkeni olabilir.
<Ref>
değeri her zaman akış değişkeni olarak yorumlanır. Değeri dize değişmez değeri olarak belirtemezsiniz. Değişmez 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 kullandığınız kapsayan köşeli 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 üzere <Ref>
ile birlikte <Value>
kullanın. <Ref>
tarafından belirtilen akış değişkeni yoksa, okunamıyorsa veya null ise Edge bunun yerine hedef akış değişkenine <Value>
değerini 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, akış değişkeni request.header.user-agent
'nın değeri hedef akış değişkeni myvar
'ye, sorgu parametresi country
'nin 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'de her iki atama için de varsayılan (veya yedek) değer belirtilmemiştir.
2. Örnek
Aşağıdaki örnekte, akış değişkeni request.header.user-agent
'nın değeri hedef akış değişkeni myvar
'ye, sorgu parametresi country
'nin 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ş, okunamayan ya da 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 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çimdedir:
http://myCO.com/v1/weather/forecastrss?w=city_ID
"w" için varsayılan bir değer tanımlamak üzere aşağıdakine benzer 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 bu değeri 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, "w" sorgu parametresinin atlandığı bu API proxy'sine istekte bulunabilirsiniz:
http://myCO.com/v1/weather/forecastrss
...ve API proxy'sinin geçerli bir sonuç döndürmesini sağlamaya devam edin.
<Value>
kullanılırkenki durumun 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 mevcut olmayan bir akış değişkeni belirtirseniz ve <IgnoreUnresolvedVariables>
değeri "true" ise Edge hata verir.
<Template>
(<AssignVariable>
öğesinin alt öğesi)
Bir mesaj şablonu belirtir. İleti şablonu, politika yürütülürken değişken dize değiştirme işlemi yapmanıza olanak tanır ve değişmez dizeleri küme parantezleri içine alınmış değişken adlarıyla birleştirebilir. Ayrıca, ileti şablonları kaçış ve büyük/küçük harf dönüştürme gibi işlevleri destekler.
Değişkenin değerinin ileti ş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 akış değişkeni olarak kullanılabilir. Aşağıdaki örnekte, mesaj şablonunun API çağrısı yapan geliştirici uygulamasındaki message_template
adlı bir müşteri özelliğinde kullanılabildiği varsayılmaktadır. Burada, 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 değişmez bir 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ştirmeniz gerekmeden ç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, referans verilen değişken boş değilse bu değer şablon olarak kullanılır. Referans verilen değer boşsa metin değeri (bu örnekte {system.uuid}-{messageid}
) şablon olarak kullanılır. Bu kalıp, bazı durumlarda varsayılan şablonu (metin kısmı) dinamik olarak ayarlanan değerlerle geçersiz kılmak istediğinizde "geçersiz kılma" değeri sağlamak için kullanışlıdır. Örneğin, koşullu bir ifade anahtar/değer çifti haritasından bir 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 bir dize olarak yorumlanır. Değeri parantez içine alsanız ("{}") bile akış değişkeni 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 |
<Ref>
öğesiyle birlikte kullanıldığında <Value>
varsayılan (veya yedek) değer olarak işlev görür. <Ref>
belirtilmemişse, çözümlenemiyorsa 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, hedef akış değişkeni myvar
'nın değeri, değişmez değer olan "42" olarak ayarlanır:
<AssignMessage name="assignvariable-1"> <AssignVariable> <Name>myvar</Name> <Value>42</Value> </AssignVariable> </AssignMessage>
2. Örnek
Aşağıdaki örnekte, akış değişkeni request.header.user-agent
'nın değeri akış değişkeni myvar
'ye, sorgu parametresi country
'nin 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>
Herhangi bir atama başarısız olursa <AssignVariable>
, hedef akış değişkenine "ErrorOnCopy" değerini atar.
<Copy>
source
özelliğiyle belirtilen iletideki değerleri, <AssignTo>
öğesiyle belirtilen iletiye kopyalar. <AssignTo>
ile bir hedef belirtmezseniz bu politika, akışta nerede 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ıyor:
<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 |
---|---|---|---|
kaynak |
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 etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğeleri 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 "MyCustomRequest" özel isteğine tek bir form parametresi 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 "MyCustomRequest" 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, "MyCustomRequest" adlı özel isteğe kopyalanıyor:
<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" yalnızca bir değere sahipse kopyalanmaz.
<FormParams>
simgesini 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) olarak ayarlanır. Örneğin,
curl
ile-d ""
isteğinize ekleyin. Content-Length
üstbilgisi: 0 olarak ayarlayın (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) olarak ayarlanır. Örneğin,
<FormParams>
kopyaladığınızda <Copy>
, iletiyi hedef hizmete göndermeden önce iletinin Content-Type
değerini "application/x-www-form-urlencoded" olarak ayarlar.
<Headers>
(<Copy>
öğesinin alt öğesi)
<Copy>
öğesinin source
özelliğiyle belirtilen istek veya yanıt mesajındaki HTTP üst bilgilerini, <AssignTo>
öğesiyle belirtilen istek veya yanıt mesajına kopyalar.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <Header> öğeleri 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, user-agent
üstbilgisi istekten 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özdizimini 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 isteğinden hedef isteğe kopyalanıp kopyalanmayacağını belirler. Bu öğenin yanıt üzerinde etkisi yoktur.
"Doğru" ise bu politika, <Copy>
öğesinin source
özniteliği tarafından belirtilen istek mesajındaki yolu kaynağından <AssignTo>
öğesi tarafından belirtilen istek mesajına 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 yolu kaynak isteğinden 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>
simgesini 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.
"Doğru" ise bu politika, <Copy>
öğesinin source
özelliğiyle belirtilen iletiden yükü alıp <AssignTo>
öğesiyle belirtilen iletiye 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ünün istekten yanıta kopyalanması için <Payload>
değeri "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)
<Copy>
öğesinin source
özelliğiyle belirtilen istekteki sorgu dizesi parametrelerini <AssignTo>
öğesiyle belirtilen isteğe kopyalar. Bu öğenin yanıt üzerinde etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğeleri 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" yalnızca bir değere sahipse kopyalanmaz.
<QueryParams>
simgesini 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 etkisi yoktur.
"true" ise bu politika, <Copy>
öğesinin source
özelliği tarafından belirtilen yanıttan ReasonPhrase
from değerini kopyalayarak <AssignTo>
öğesi tarafından belirtilen yanıta to yapıştırı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>
"true" olarak ayarlanır. Bu da <Copy>
'nin, varsayılan yanıttaki neden ifadesini özel bir 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>
simgesini 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 etkisi yoktur.
"Doğru" ise bu politika, <Copy>
öğesinin source
özelliği tarafından belirtilen yanıt mesajındaki durum kodunu <AssignTo>
öğesi tarafından 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 ayarlanır. Bu işlem, durum kodunu varsayılan yanıt nesnesinden yeni ve özel bir yanıt nesnesine kopyalar:
<AssignMessage name="copy-statuscode-1"> <Copy source="response"> <StatusCode>true</StatusCode> </Copy> <AssignTo createNew="true" transport="http" type="response">MyCustomResponse</AssignTo> </AssignMessage>
<StatusCode>
simgesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<StatusCode>
'nın yaygın bir kullanım alanı, <AssignTo>
'ın 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>
öğesinin alt öğesi)
HTTP fiilinin kaynak isteğinden hedef isteğe kopyalanıp kopyalanmayacağını belirler. Bu öğenin yanıt üzerinde 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>
değeri "true" olarak ayarlanır. Bu işlem, fiili varsayılan istekten yeni ve özel bir 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>
simgesini 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 isteğinden hedef isteğe kopyalanıp kopyalanmayacağını belirler. Bu öğenin yanıt üzerinde etkisi yoktur.
"Doğru" 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 örnek, varsayılan istek nesnesindeki sürümü yeni ve özel bir istek nesnesine kopyalayan istekte <Version>
değerini "true" olarak ayarlar:
<AssignMessage name="copy-version-1"> <Copy source="request"> <Version>true</Version> </Copy> <AssignTo createNew="true" transport="http" type="request">MyCustomRequest</AssignTo> </AssignMessage>
<Version>
simgesini 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> değerini 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ümlenmemiş bir değişkenle karşılaşıldığında işlemenin 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ümlenmemiş değişkenleri yoksaymak ve işleme devam etmek için true
olarak ayarlayın; aksi takdirde false
. Varsayılan değer false
'dır.
<IgnoreUnresolvedVariables>
değerini true
olarak ayarlamak, <AssignMessage>
değerini continueOnError
olarak ayarlamaktan farklıdır. Çünkü bu işlem, değişkenlerin değerlerini ayarlama ve alma işlemine özeldir.true
continueOnError
değerini 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 ayarlanır:
<AssignMessage name="ignoreunresolvedvariables"> <Copy source="response"> ... <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> </Copy> </AssignMessage>
<Remove>
İletiden üstbilgileri, sorgu parametrelerini, form parametrelerini ve/veya ileti yükünü kaldırır. Mesaj, bir istek veya yanıt olabilir. Hangi mesajın <Remove>
ü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>
için yaygın bir kullanım alanı, arka uç sunucusuna iletilmesini önlemek amacıyla 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, iletinin gövdesi yanıttan kaldırılıyor:
<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ırır ve istemciye yalnızca HTTP üstbilgilerini döndürür.
2. Örnek
Aşağıdaki örnekte, gelen istekten tüm form parametreleri ve bir sorgu parametresi kaldırılıyor:
<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 etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <FormParam> öğeleri 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 örnek, istekten üç form parametresini kaldırır:
<AssignMessage name="remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
2. Örnek
Aşağıdaki örnek, istekteki tüm form parametrelerini kaldırır:
<AssignMessage name="remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
3. Örnek
Aynı ada sahip birden fazla form parametresi varsa aşağıdaki söz dizimini kullanın:
<AssignMessage name="remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo createNew="false" transport="http" type="application/x-www-form-urlencoded"/> </AssignMessage>
Bu örnekte "f1", "f2" ve "f3"ün ikinci değeri kaldırılıyor. "f3" yalnızca bir değere sahipse kaldırılmaz.
<FormParams>
simgesini 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)
Belirtilen HTTP üstbilgilerini, <AssignTo>
öğesiyle belirtilen istek veya yanıttan kaldırır.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <Header> öğeleri 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, istekten user-agent
üstbilgisini 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 örnekte, istekteki tüm üstbilgiler kaldırılı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özdizimini 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, "h1", "h2" ve "h3"ün ikinci değeri istekten kaldırılıyor. "h3" yalnızca bir değere sahipse kaldırılmaz.
<Payload>
(<Remove>
öğesinin alt öğesi)
<Remove>
öğesinin, <AssignTo>
öğesiyle belirtilen istek veya yanıttaki yükü silip silmeyeceğini belirler. Yükü temizlemek için "true", aksi takdirde "false" olarak 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>
"true" olarak ayarlanı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 etkisi yoktur.
Varsayılan Değer | Yok |
Zorunlu mu? | İsteğe bağlı |
Tür | <QueryParam> öğeleri 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, istekten tek bir sorgu parametresi kaldırılıyor:
<AssignMessage name="remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
2. Örnek
Aşağıdaki örnek, istekteki tüm sorgu parametrelerini kaldırır:
<AssignMessage name="remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
3. Örnek
Aynı ada sahip birden fazla sorgu parametresi varsa aşağıdaki söz dizimini kullanın:
<AssignMessage name="remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Bu örnekte, "qp1", "qp2" ve "qp3"ün ikinci değeri istekten kaldırılıyor. "qp3" yalnızca bir değere sahipse kaldırılmaz.
4. Örnek
Aşağıdaki örnekte, apikey
sorgu parametresi istekten kaldırılıyor:
<AssignMessage name="remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
<QueryParams>
simgesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- HTTP fiili: GET
- Mesaj türü: İstek
<Set>
İstek veya yanıt mesajında, <AssignTo>
öğesiyle belirtilen bilgileri ayarlar. <Set>
Orijinal iletide zaten bulunan ü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 bunları bu öğeyle belirttiğiniz yeni değerlerle değiştirir. Bu öğenin yanıt ü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, yeni bir özel istekte "myparam" adlı bir form parametresi, request.header.myparam
değişkeninin değerine ayarlanıyor:
<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>
simgesini 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 herhangi bir form parametresi eklemez. Bu, <FormParams>
öğesini atlamayla aynıdır.
<Set>
, mesajı hedef uç noktaya göndermeden önce mesajın Content-Type
değerini "application/x-www-form-urlencoded" olarak değiştirir.
<Headers>
(<Set>
öğesinin alt öğesi)
İstek veya yanıttaki mevcut HTTP üst bilgilerinin üzerine yazar. Bu, <AssignTo>
öğesiyle belirtilir.
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
başlığı request.header.user-agent
değişkeninin değerine ayarlanı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 tanımlarsanız (<Add><Headers/></Add>
) politika herhangi bir başlık eklemez. Bu, <Headers>
öğesinin atlanmasıyla aynıdır.
<Path>
(<Set>
öğesinin alt öğesi)
<Payload>
(<Set>
öğesinin alt öğesi)
<AssignTo>
öğesiyle belirtilen bir istek veya yanıtın mesaj gövdesini tanımlar. Yük, düz metin, JSON veya XML gibi geçerli 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ü ayarlanmaktadır:
<AssignMessage name="set-payload-1"> <Set> <Payload contentType="text/plain">42</Payload> </Set> </AssignMessage>
2. Örnek
Aşağıdaki örnekte bir JSON yükü ayarlanmaktadır:
<AssignMessage name="set-payload-2"> <Set> <Payload contentType="application/json"> {"name":"foo", "type":"bar"} </Payload> </Set> </AssignMessage>
3. Örnek
Aşağıdaki örnek, değişken adlarını küme parantezleri içine alarak değişken değerlerini yükün içine 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 (ör. 16.08.17 bulut sürümünden önce) JSON yüklerindeki değişken referanslarını belirtmek için küme parantezleri kullanamıyordunuz. Bu sürümlerde, sınırlayıcı karakterleri belirtmek için variablePrefix
ve variableSuffix
özelliklerini kullanmanız ve değişken adlarını bu karakterlerle sarmalamanı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â çalışmaktadır.
4. Örnek
<Payload>
içeriği, ileti şablonu olarak kabul edilir. Bu, AssignMessage politikasının, küme parantezleri içine 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 bölümünü değişken değerine ayarlamak için küme parantezi 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, bir akış değişkenindeki baştaki 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, bir akış değişkeninde sondaki 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 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 ayarlanıyor:
<AssignMessage continueOnError="false" enabled="true" name="set-queryparams-1"> <Set> <QueryParams> <QueryParam name="address">{request.header.address}</QueryParam> </QueryParams> </Set> </AssignMessage>
<QueryParams>
simgesini 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 herhangi bir sorgu parametresi ayarlamaz. Bu, <QueryParams>
öğesini atlamayla aynıdır.
<ReasonPhrase>
(<Set>
öğesinin alt öğesi)
Yanıtın neden ifadesini ayarlar. Bu işlem genellikle <StatusCode>
ile birlikte hata ayıklama için yapılır. Bu öğenin istek üzerinde 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 nedenle, aşağıdaki örnekte gösterildiği gibi, çalışma zamanında süslü parantez içine alınmış bir değişken adı, referans verilen değişkenin değeriyle değiştirilir:
<AssignMessage name="set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<ReasonPhrase>
simgesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<StatusCode>
(<Set>
öğesinin alt öğesi)
Yanıtın durum kodunu ayarlar. Bu öğenin istek üzerinde etkisi yoktur.
Varsayılan Değer | "200" (<AssignTo> öğesinin 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 ayarlanmaktadır:
<AssignMessage name="set-statuscode-1"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
2. Örnek
<StatusCode>
içeriği, ileti şablonu olarak kabul edilir. Bu nedenle, küme parantezleri içine alınmış bir değişken adı, çalışma zamanında referans verilen değişkenin değeriyle değiştirilir. Aşağıdaki örnekte bu durum gösterilmektedir:
<AssignMessage name="set-statuscode-2"> <Set> <StatusCode>{calloutresponse.status.code}</StatusCode> </Set> <AssignTo createNew="true" transport="http" type="response"/> </AssignMessage>
<StatusCode>
simgesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: Yanıt
<Verb>
(<Set>
öğesinin alt öğesi)
İstekle ilgili HTTP fiilini ayarlar. Bu öğenin yanıt ü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, istekte basit bir fiil ayarlanı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üme parantezleri içine alınmış 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 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>
simgesini yalnızca aşağıdaki ölçütler karşılandığında kullanabilirsiniz:
- Mesaj türü: İstek
<Version>
(<Set>
öğesinin alt öğesi)
Bir istekte HTTP sürümünü ayarlar. Bu öğenin yanıt ü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 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ğıdaki örnekte, sürüm numarasını ayarlamak için küme parantezleri 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üme parantezleri içine alınmış 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>
simgesini 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 AssignMessage politikasını kullanabilirsiniz. Özel istek oluşturduktan sonra bu isteği aşağıdaki şekillerde kullanabilirsiniz:
- Diğer politikalarda değişkenlerine erişme
- Harici bir hizmete iletme
Özel istek mesajı oluşturmak için AssignMessage politikanızdaki <AssignTo>
öğesini kullanın. createNew
değerini "true" olarak ayarlayın ve öğenin gövdesinde yeni mesajın adını belirtin. Aşağıdaki örnekte bu durum gösterilmektedir:
<AssignMessage name="assignto-2"> <AssignTo createNew="true" transport="http" type="request"/> </AssignMessage>
Edge, varsayılan olarak özel istek mesajıyla ilgili herhangi bir işlem yapmaz. Edge, oluşturduktan sonra orijinal istekle akışa devam eder. Özel isteği kullanmak için proxy'nize ServiceCallout politikası gibi bir politika ekleyin. Bu politika, özel isteği harici bir hizmete iletebilir.
Aşağıdaki örneklerde özel istek mesajları oluşturulmaktadır:
1. Örnek
Aşağıdaki örnekte, Assign Message ile ö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:
- "MyCustomRequest" adlı yeni bir istek mesajı nesnesi oluşturur.
- Bu politika, MyCustomRequest üzerinde:
- Gelen istekteki
user-agent
HTTP üst bilgisinin değerini yeni mesaja kopyalar.<Copy>
,user-agent
akış değişkenine mutlak bir referans kullandığındansource
özelliğinin<Copy>
için belirtilmesi gerekmez. - Özel mesajdaki
address
sorgu parametresini, gelen isteğinaddy
sorgu parametresinin değerine ayarlar. - HTTP fiilini
GET
olarak ayarlar.
- Gelen istekteki
<IgnoreUnresolvedVariables>
öğesini "false" olarak ayarlar.<IgnoreUnresolvedVariables>
"false" olduğunda, politikanın eklemeye çalıştığı değişkenlerden biri yoksa Edge, API akışında işlemi durdurur.
2. Örnek
Aşağıda, Assign Message 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 örnekte "partner.request" adlı yeni bir özel istek oluşturulur. Ardından, yeni istekte <Verb>
ve <Payload>
ayarlanır.
Akışta daha sonra gerçekleşen başka bir AssignMessage politikasında özel bir istek mesajına erişebilirsiniz. Aşağıdaki örnekte, özel istek mesajının user-agent
üstbilgisinin değeri alınmaktadı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 |
---|---|
Neden Assign Message Policy? | Arka uç kodunu değiştirmeden API isteğini veya yanıtını değiştirmek için AssignMessage politikasını kullanmanın avantajları hakkında bilgi edinin. |
AssignMessage politikasını kullanarak API öğelerini kopyalama | Bir API isteği veya yanıtından öğ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 hedef arka uca ulaşmadan önce API öğelerini kaldırın ve API'yi değiştirin. |
AssignMessage politikasını kullanarak API öğeleri ekleme ve ayarlama | AssignMessage politikasını kullanarak sorgu parametreleri, başlıklar, form parametreleri veya yükler ekleyerek 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 politikalarda bu 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 isteği 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 sahte REST API 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ü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 döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Ç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, değişken ayarlayamadı. çözümlenmemiş değişkendir. | |
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
|
build |
steps.assignmessage.UnresolvedVariable |
500 |
Bu hata, İleti Ata politikasında belirtilen değişken aşağıdakilerden biri olduğunda ortaya çıkar:
|
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 |
İleti Ata aracının <Copy> ve/veya <Remove> öğelerinde belirtilen dizin
politika 0 veya negatif bir sayı olursa API Proxy'sinin dağıtımı başarısız olur.
|
build |
InvalidVariableName |
<Name> alt öğesi boşsa veya <AssignVariable> öğesinde belirtilmemişse
geçerli bir değişken adı olmadığından API proxy’sinin dağıtımı
için bir değer atanır. Geçerli bir değişken adı gerekiyor.
|
build |
InvalidPayload |
Politikada belirtilen bir 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 Ne, ne ve ne zaman bilmeniz gerekir.
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, 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" } }
Ö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ı (.xsd
) ile tanımlanır. Referans olarak politika şemaları GitHub'da mevcuttur.
İlgili konular
AssignMessage politikasının çalışan örnekleri API Platform örneklerinde mevcuttur.
ProxyEndpoint'ten target.url
değerinin nasıl geçersiz kılınacağına dair daha gelişmiş bir örnek için bu Apigee Topluluk makalesine bakın.
ServiceCallout politikasında "set path"in nasıl çalıştığını görmek için Apigee GitHub örneklerindeki bu Learn by doing example'a (Uygulayarak öğrenme örneği) göz atın. Depoyu klonlayıp ilgili konudaki talimatları uygulamanız yeterlidir. Örnekte, istek yolu ayarlamak için AssignMessage politikası, ardından harici bir hizmete istekte bulunmak için Service Callout politikası kullanılır.