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ı, mesajları veya akış değişkenlerini oluşturabilir ya da değiştirebilir. Bu politikayı, istek mesajlarını bir proxy üzerinden yukarı akış sistemlerine göndermeden önce veya yanıt mesajlarını API tüketicisi uygulamalarına iletmeden önce değiştirmek için kullanın.
<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 name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
2. Yükü kaldırın
Aşağıdaki örnekte, <Remove>
öğesiyle yanıttaki yük silinir:
<AssignMessage name="AM-remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo>response</AssignTo> </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="AM-modify-response"> <Set> <Headers> <Header name="Cache-Hit">{lookupcache.LookupCache-1.cachehit}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false </IgnoreUnresolvedVariables> <AssignTo>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>
öğesindeki değişken adı olarak response
belirtildiğinden bu politika, başlangıçta hedef sunucu tarafından döndürülen verilerle ayarlanan 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="AM-set-dynamic-content"> <AssignTo>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="AM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </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 name="AM-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> </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 name="AM-Payload-from-SC-header"> <Set> <Payload contentType="application/json"> {"Cookies from Service Callout":" {calloutResponse.header.Set-Cookie.2}"} </Payload> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> <AssignTo>response</AssignTo> </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 name="AM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
Aşağıdaki örnekte, hedef uç noktaya gönderilecek isteğe partner-id
üstbilgisi eklemek için <Headers>
öğesi kullanılmaktadır:
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 3
Aşağıdaki örnekte, isteğe statik değer içeren tek bir sorgu parametresi eklemek için <QueryParams>
öğesi kullanılmaktadır:
<AssignMessage name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Bu örnekte, istek öncesi akışta <Add>
kullanılmaktadır. Sonuçları İzleme aracı gibi bir araçta incelerseniz https://example-target.com/get
isteği https://example-target.com/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>
Örnek 1
Aşağıdaki örnekte, isteğe tek bir form parametresi ("answer") ve statik bir değer ("42") ekleniyor:
<AssignMessage name="AM-add-formparams-1"> <Add> <FormParams> <FormParam name="answer">42</FormParam> </FormParams> </Add> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
Aşağıdaki örnekte, name
sorgu parametresinin değeri alınır, istekte form parametresi olarak eklenir ve ardından sorgu parametresi kaldırılır:
<AssignMessage name="AM-Swap-QueryParam-to-FormParams"> <Add> <FormParam name="name">{request.queryparam.name}</FormParam> </Add> <Remove> <QueryParam name="name"/> </Remove> </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 name="AM-add-formparams-3"> <Add> <FormParams> <FormParam name="username">{request.queryparam.name}</FormParam> <FormParam name="zip_code">{request.queryparam.zipCode}</FormParam> <FormParam name="default_language">{request.queryparam.lang}</FormParam> </FormParams> </Add> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Bu örnek, kaynak isteğinden sorgu dizesi parametrelerini alır ve bunları farklı adlarla form parametreleri olarak ekler. Ardından, orijinal sorgu parametrelerini kaldırır. Apigee, değiştirilen isteği hedef uç noktaya gönderir.
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:
username=nick&zip_code=90210&default_language=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>
Örnek 1
Aşağıdaki örnekte, istek mesajına bir partner-id
başlığı eklenmekte ve verifyapikey.VAK-1.developer.app.partner-id
akış değişkeninin değeri bu başlığa atanmaktadır.
<AssignMessage name="AM-add-headers-1"> <Add> <Headers> <Header name="partner-id">{verifyapikey.VAK-1.developer.app.partner-id}</Header> </Headers> </Add> <AssignTo>request</AssignTo> </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 name="AM-add-queryparams-1"> <Add> <QueryParams> <QueryParam name="myParam">42</QueryParam> </QueryParams> </Add> <AssignTo>request</AssignTo> </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>
özelliğini belirtmezseniz veya <AssignTo>
öğesini belirtirseniz ancak öğe için bir metin değeri 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. 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>
Örnek 1
Aşağıdaki örnekte, hedefin hedef uç noktaya gönderilecek orijinal istek olduğu belirtilmektedir:
<AssignMessage name="assignto-1"> <!-- DO NOT do this --> <AssignTo createNew="false" transport="http" type="request"/> </AssignMessage>
Örnek 2
Aşağıdaki örnekte yeni bir istek nesnesi oluşturuluyor:
<AssignMessage name="AM-assignto-2"> <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> </AssignMessage>
Yeni bir istek veya yanıt nesnesi oluşturduğunuzda AssignMessage politikası politikasının diğer öğeleri (ör. <Add>
, <Set>
ve <Copy>
) 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 <Copy>
) 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.
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 akış değişkenine 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> |
Akış değişkenine atadığınız değer aşağıdakilerden biri olabilir:
- Değişmez dize: 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şkenine yerleştirilecek değeri almak için,
<Template>
alt öğesini kullanarak enterpolasyon yapılacak bir mesaj şablonu belirtin.
<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.
Örnek 1
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>
Örnek 2
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='AV-via-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>
Örnek 1
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.
Örnek 2
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.
Örnek 3
<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.
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>
Örnek 1
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='AV-via-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='AV-via-template-indirectly'> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <AssignVariable> <Name>my_destination_variable</Name> <Value>BADDBEEF</Value> <Template ref='my_template_variable'/> </AssignVariable> </AssignMessage>
Örnek 3
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='AV-template-with-fallback'> <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>
öğesinin altında alt öğe belirtmezseniz belirlenen kaynak mesajın tüm bölümleri kopyalanır.
<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, request
mesajındaki bir üstbilgi, üç form parametresi, yol ve tüm sorgu parametreleri newRequest
adlı yeni bir özel isteğe kopyalanıyor:
<AssignMessage name="AM-copy-1"> <AssignTo createNew="true" transport="http" type="request">newRequest</AssignTo> <Copy source="request"> <Headers> <Header name="Header_Name_1"/> </Headers> <FormParams> <FormParam name="Form_Param_Name_1"/> <FormParam name="Form_Param_Name_2"/> <FormParam name="Form_Param_Name_3"/> </FormParams> <Path>true</Path> <QueryParams/> </Copy> </AssignMessage>
<Payload>
ve <Verb>
gibi öğeler bulunmadığından politika, iletinin bu kısımlarını kopyalamaz.
Örnek 2
Aşağıdaki örnekte önce mevcut response
mesajındaki her şey kaldırılır, ardından secondResponse
adlı farklı bir mesajdaki tüm değerler response
mesajına kopyalanır:
<AssignMessage name='AM-Copy-Response'> <AssignTo createNew="false" transport="http" type="response">response</AssignTo> <!-- first remove any existing values --> <Remove/> <!-- then copy everything from the designated message --> <Copy source="secondResponse"/> </AssignMessage>
<Copy>
öğesinin tek bir özelliği vardır:
Ö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>
Örnek 1
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>
Örnek 2
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>
Örnek 3
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>
Örnek 4
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>
, 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ğ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>
Örnek 2
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>
Örnek 3
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>
Örnek 1
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>
Örnek 1
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="AM-copy-payload-1"> <Copy source="request"> <Payload>true</Payload> </Copy> <AssignTo>response</AssignTo> </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>
Örnek 1
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>
Örnek 2
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>
Örnek 3
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. Kaynak ve <AssignTo>
öğesi belirtildiği şekilde olduğunda <Copy>
, adlandırılmış yanıt mesajındaki neden ifadesini response
nesnesine kopyalar:
<AssignMessage name="AM-copy-reasonphrase-1"> <Copy source="serviceCalloutResponse"> <ReasonPhrase>true</ReasonPhrase> </Copy> <AssignTo>response</AssignTo> </AssignMessage>
<ReasonPhrase>
öğesini yalnızca kaynak ve hedef mesajlar Yanıt türündeyken kullanabilirsiniz.
<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>
öğesini yalnızca kaynak ve hedef mesajlar Yanıt türündeyken kullanabilirsiniz.
<StatusCode>
'nın yaygın bir kullanımı, proxy yanıtı durum kodunu hedeften alınan değerden farklı bir değere ayarlamaktı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>
Örnek 1
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>
Örnek 1
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="AM-Set-Headers"> <Set> <Headers> <Header name='new-header'>{possibly-defined-variable}<Header> </Headers> </Set> <IgnoreUnresolvedVariables>true </IgnoreUnresolvedVariables> </AssignMessage>
<IgnoreUnresolvedVariables>
, true
olarak ayarlandığı için possibly-defined-variable
değişkeni tanımlanmamışsa bu politika hata vermez.
<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ç sunucuya iletilmesini önlemek amacıyla gelen istek nesnesinden hassas bilgiler içeren bir sorgu parametresini veya başlığı 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>
Örnek 1
Aşağıdaki örnekte, iletinin gövdesi yanıttan kaldırılıyor:
<AssignMessage name="AM-remove-1"> <DisplayName>remove-1</DisplayName> <Remove> <Payload>true</Payload> </Remove> <AssignTo>response</AssignTo> </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.
Örnek 2
Aşağıdaki örnekte, request
nesnesinden tüm form parametreleri ve bir sorgu parametresi kaldırılıyor:
<AssignMessage name="AM-remove-2"> <Remove> <!-- Empty (<FormParams/>) removes all form parameters --> <FormParams/> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 3
Aşağıdaki örnekte, bir mesaj nesnesindeki her şey kaldırılır:
<AssignMessage name="AM-remove-3"> <Remove/> <AssignTo>request</AssignTo> </AssignMessage>
Genellikle bunu yalnızca mesajda bazı değiştirme değerlerini ayarlamak için <Set>
öğesini veya <Copy>
öğesini kullanacaksanız yaparsınız.
<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>
Örnek 1
Aşağıdaki örnek, istekten üç form parametresini kaldırır:
<AssignMessage name="AM-remove-formparams-1"> <Remove> <FormParams> <FormParam name="form_param_1"/> <FormParam name="form_param_2"/> <FormParam name="form_param_3"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
2. örnek
Aşağıdaki örnek, istekteki tüm form parametrelerini kaldırır:
<AssignMessage name="AM-remove-formparams-2"> <Remove> <FormParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 3
Aynı ada sahip birden fazla form parametresi varsa aşağıdaki söz dizimini kullanın:
<AssignMessage name="AM-remove-formparams-3"> <Remove> <FormParams> <FormParam name="f1"/> <FormParam name="f2"/> <FormParam name="f3.2"/> </FormParams> </Remove> <AssignTo>request</AssignTo> </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>
Örnek 1
Aşağıdaki örnek, istekten user-agent
üstbilgisini kaldırır:
<AssignMessage name="AM-remove-one-header"> <Remove> <Headers> <Header name="user-agent"/> </Headers> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
Aşağıdaki örnekte, istekteki tüm üstbilgiler kaldırılır:
<AssignMessage name="AM-remove-all-headers"> <Remove> <Headers/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 3
Aynı ada sahip birden fazla başlık varsa aşağıdaki sözdizimini kullanın:
<AssignMessage name="AM-remove-headers-3"> <Remove> <Headers> <Header name="h1"/> <Header name="h2"/> <Header name="h3.2"/> </Headers> </Remove> <AssignTo>request</AssignTo> </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="AM-remove-payload-1"> <Remove> <Payload>true</Payload> </Remove> <AssignTo>request</AssignTo> </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>
Örnek 1
Aşağıdaki örnekte, istekten tek bir sorgu parametresi kaldırılıyor:
<AssignMessage name="AM-remove-queryparams-1"> <Remove> <QueryParams> <QueryParam name="qp1"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
Aşağıdaki örnek, istekteki tüm sorgu parametrelerini kaldırır:
<AssignMessage name="AM-remove-queryparams-2"> <Remove> <QueryParams/> </Remove> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 3
Aynı ada sahip birden fazla sorgu parametresi varsa aşağıdaki söz dizimini kullanın:
<AssignMessage name="AM-remove-queryparams-3"> <Remove> <QueryParams> <QueryParam name="qp1"/> <QueryParam name="qp2"/> <QueryParam name="qp3.2"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </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.
Örnek 4
Aşağıdaki örnekte, apikey
sorgu parametresi istekten kaldırılıyor:
<AssignMessage name="AM-remove-query-param"> <Remove> <QueryParams> <QueryParam name="apikey"/> </QueryParams> </Remove> <AssignTo>request</AssignTo> </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 mevcut olan üstbilgilerin, sorgu veya form parametrelerinin üzerine yazar. Bir HTTP mesajındaki üstbilgiler, sorgu ve form parametreleri birden fazla değer içerebilir. Bir başlığa veya parametreye ek değerler eklemek 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>
Örnek 1
Aşağıdaki örnekte belirli bir başlık ayarlanmaktadır. Bu politika istek akışına eklendiğinde, yukarı akış sisteminin orijinal gelen isteğe dahil edilmemiş ek bir başlık almasına izin verir.
<AssignMessage name="AM-Set-Header"> <Set> <Headers> <Header name="authenticated-developer">{verifyapikey.VAK-1.developer.id}</Header> </Headers> </Set> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
Aşağıdaki örnekte, yanıtın yükü ve Content-Type
üstbilgisi üzerine yazılır.
<AssignMessage name="AM-Overwrite-Payload"> <Set> <Payload contentType="application/json">{ "status" : 42 }</Payload> </Set> <AssignTo>response</AssignTo> </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>
Örnek 1
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="AM-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, x-ratelimit-remaining
başlığı ratelimit.Quota-1.available.count
değişkeninin değerine ayarlanır:
<AssignMessage name="AM-Set-RateLimit-Header"> <Set> <Headers> <Header name="X-RateLimit-Remaining">{ratelimit.Quota-1.available.count}</Header> </Headers> </Set> <AssignTo>response</AssignTo> </AssignMessage>
Politikanızda boş üstbilgiler tanımlarsanız
(<Set><Headers/></Set>
) politika herhangi bir üstbilgi ayarlamaz. Bu, <Headers>
öğesini atlamakla aynı etkiye sahiptir.
<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>
Örnek 3
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'nin önceki sürümlerinde, 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.
Örnek 4
<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 name="AM-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>
Örnek 1
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="AM-set-reasonphrase-2"> <Set> <ReasonPhrase>{calloutresponse.reason.phrase}</ReasonPhrase> </Set> <AssignTo>response</AssignTo> </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="AM-set-statuscode-404"> <Set> <StatusCode>404</StatusCode> </Set> <AssignTo>response</AssignTo> </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>response</AssignTo> </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="AM-set-verb-1"> <Set> <Verb>POST</Verb> </Set> <AssignTo>request</AssignTo> </AssignMessage>
Örnek 2
<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="AM-set-verb-to-dynamic-value"> <Set> <Verb>{my_variable}</Verb> </Set> <AssignTo>request</AssignTo> </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="AM-set-version-1"> <Set> <Version>1.1</Version> </Set> </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="AM-set-version-2"> <Set> <Version>{my_version}</Version> </Set> <AssignTo>request</AssignTo> </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="AM-assignto-2"> <AssignTo createNew="true" transport="http" type="request">NameOfNewMessage</AssignTo> </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:
Örnek 1
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>partner.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="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.