Hizmet çağrısı politikası

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

Ne?

Hizmet Çağrısı politikası, API proxy akışınızdan başka bir hizmete çağrı göndermenizi sağlar. Harici bir hizmete (ör. harici bir RESTful hizmet uç noktası) veya dahili hizmetlere (ör. aynı kuruluş ve ortamdaki bir API proxy'si) çağrı yapabilirsiniz.

  • Harici bir kullanım alanında, proxy'nizin dışında olan bir üçüncü taraf API'sine çağrı yaparsınız. Üçüncü taraf API'den gelen yanıt ayrıştırılır ve API'nizin yanıt mesajına eklenir. Böylece, uygulama son kullanıcıları için veriler zenginleştirilir ve "birleştirilir". Ayrıca, istek akışında Hizmet Çağrısı politikasını kullanarak bir istekte bulunabilir, ardından yanıttaki bilgileri API proxy'sinin TargetEndpoint'ine iletebilirsiniz.
  • Başka bir kullanım alanında, arama yaptığınız yerle aynı kuruluş ve ortamda bulunan bir proxy'yi ararsınız. Örneğin, bir veya daha fazla başka proxy'nin kullanacağı bazı ayrı düşük düzeyli işlevler sunan bir proxy'niz olduğunda bu işlevi yararlı bulabilirsiniz. Örneğin, arka uç veri deposuyla oluşturma/okuma/güncelleme/silme işlemlerini kullanıma sunan bir proxy, verileri istemcilere sunan diğer birçok proxy'nin hedef proxy'si olabilir.

Politika, HTTP ve HTTPS üzerinden yapılan istekleri destekler.

Örnekler

Dahili proxy'ye yapılan yerel arama

<LocalTargetConnection>
    <APIProxy>data-manager</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

Bu örnekte, data-manager adlı yerel bir API proxy'sine (aynı kuruluş ve ortamda bulunan) çağrı oluşturuluyor ve adı default olan proxy uç noktası belirtiliyor.

Değişken olarak URL

<HTTPTargetConnection>
    <URL>http://example.com/{request.myResourcePath}</URL>
</HTTPTargetConnection>

Bu örnekte, hedef URL'sini dinamik olarak doldurmak için URL'de bir değişken kullanılmaktadır. URL'nin http:// protokolü kısmı bir değişkenle belirtilemez. Ayrıca, URL'nin alan kısmı ve URL'nin geri kalanı için ayrı değişkenler kullanmanız gerekir.

Google coğrafi kodlama / tanımlama isteği

<ServiceCallout name="ServiceCallout-GeocodingRequest1">
    <DisplayName>Inline request message</DisplayName>
    <Request variable="authenticationRequest">
      <Set>
        <QueryParams>
          <QueryParam name="address">{request.queryparam.postalcode}</QueryParam>
          <QueryParam name="region">{request.queryparam.country}</QueryParam>
          <QueryParam name="sensor">false</QueryParam>
        </QueryParams>
      </Set>
    </Request>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>
http://maps.googleapis.com/maps/api/geocode/json

İstek nesnesini oluşturmak için Assign Message gibi bir politika kullanmak yerine, doğrudan Service Callout politikasında tanımlayabilirsiniz. Bu örnekte, hizmet çağrısı politikası, harici hizmete iletilen üç sorgu parametresinin değerlerini ayarlıyor. Yük, application/xml gibi bir kodlama türü, üstbilgiler, form parametreleri vb. belirten bir hizmet çağrısı politikasıyla tam bir istek mesajı oluşturabilirsiniz.

İsteğin, hizmet açıklama metni politikasına ulaşmadan önce oluşturulduğu başka bir örnek aşağıda verilmiştir.

<ServiceCallout name="ServiceCallout-GeocodingRequest2">
    <Request clearPayload="false" variable="GeocodingRequest"/>
    <Response>GeocodingResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
      <URL>http://maps.googleapis.com/maps/api/geocode/json</URL>
    </HTTPTargetConnection>
</ServiceCallout>

İstek iletisinin içeriği, GeocodingRequest adlı bir değişkenden (örneğin, AssignMessage politikasıyla doldurulabilir) çıkarılır. Yanıt mesajı, GeocodingResponse adlı değişkene atanır. Bu değişken, JavaScript veya Java ile yazılmış özel kod ya da Değişkenleri Ayıkla politikası tarafından ayrıştırılabilir. Politika, zaman aşımına uğramadan önce Google Geocoding API'den gelen yanıtı 30 saniye bekler.

Bu örnek hizmet çağrısını kullanan, Assign Message ve Extract Variables politikalarıyla birlikte tam bir örnek API proxy'si için Politika bileşimi kullanma bölümüne bakın.

Arama hedef sunucuları

<ServiceCallout async="false" continueOnError="false" enabled="true" name="service-callout">
    <DisplayName>service-callout</DisplayName>
    <Properties/>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    </Request>
    <Response>myResponse</Response>
    <HTTPTargetConnection>
        <LoadBalancer>
            <Algorithm>RoundRobin</Algorithm>
            <Server name="httpbin"/>
            <Server name="yahoo"/>
        </LoadBalancer>
        <Path>/get</Path>
    </HTTPTargetConnection>
</ServiceCallout>

Bu politika, hedef sunucuları çağırmak ve bunlar arasında yük dengeleme yapmak için LoadBalancer özelliğini kullanır. Bu örnekte, yük "httpbin" ve "yahoo" adlı iki hedef sunucuya dağıtılır. Proxy'niz için hedef sunucuları ayarlama ve yük dengelemeyi yapılandırma hakkında bilgi edinmek için Arka uç sunucularında yük dengeleme başlıklı makaleyi inceleyin.


Hizmet açıklama metni politikası hakkında

API proxy'nizde hizmet çağrısı politikası kullanabileceğiniz birçok senaryo vardır. Örneğin, coğrafi konum verileri, müşteri yorumları, iş ortağının perakende kataloğundaki öğeler vb. sunmak için harici bir hizmete çağrı gönderecek şekilde bir API proxy'si yapılandırabilirsiniz.

Açıklama metni genellikle diğer iki politikayla birlikte kullanılır: İleti Atama ve Değişkenleri Çıkarma.

  • İstek: Assign Message (Mesajı Ata), uzak hizmete gönderilen istek mesajını doldurur.
  • Yanıt: Değişkenleri Ayıkla, yanıtı ayrıştırır ve belirli içerikleri ayıklar.

Tipik hizmet açıklama metni politikası bileşimi şunları içerir:

  1. Assign Message policy: İstek mesajı oluşturur, HTTP üstbilgilerini ve sorgu parametrelerini doldurur, HTTP fiilini ayarlar vb.
  2. Service Callout (Hizmet Çağrısı) politikası: Assign Message (Mesaj Atama) politikası tarafından oluşturulan bir mesaja referans verir, harici çağrı için bir hedef URL tanımlar ve hedef hizmetin döndürdüğü yanıt nesnesi için bir ad tanımlar.

    Performansı artırmak için bu Apigee Topluluğu ileti dizisinde açıklandığı gibi hizmet açıklama metni yanıtlarını da önbelleğe alabilirsiniz: Hizmet açıklama metni politikasının sonuçlarını önbellekte nasıl saklayabilirim ve daha sonra önbellekten nasıl alabilirim?
  3. Değişkenleri Çıkarma politikası: Genellikle, Hizmet Çağrısı tarafından oluşturulan mesajı ayrıştıran bir JSONPath veya XPath ifadesini tanımlar. Ardından politika, hizmet çağrısı yanıtından ayrıştırılan değerleri içeren değişkenleri ayarlar.

Assign Message ve Extract Variables politikalarıyla birlikte Service Callout politikasını kullanan eksiksiz bir örnek API proxy'si için Politika bileşimini kullanma bölümüne bakın.

Özel hata işleme

Öğe referansı

Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir:

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">
    <DisplayName>Custom label used in UI</DisplayName>
    <Request clearPayload="true" variable="myRequest">
        <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
        <Remove>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
         </Remove>
         <Copy>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Copy>
        <Add>
            <Headers/>
            <QueryParams/>
            <FormParams/>
        </Add>
        <Set>
            <Headers/>
            <QueryParams/>
            <FormParams/>
            <Payload/>
            <ReasonPhrase/>
            <StatusCode/>
            <Path/>
            <Version/>
            <Verb/>
        </Set>
    </Request>
    <Response>calloutResponse</Response>
    <Timeout>30000</Timeout>
    <HTTPTargetConnection>
        <URL>http://example.com</URL>
        <LoadBalancer/>
        <SSLInfo/>
        <Properties/>
    </HTTPTargetConnection>
    <LocalTargetConnection>
        <APIProxy/>
        <ProxyEndpoint/>
        <Path/>
    </LocalTargetConnection>
</ServiceCallout>

<ServiceCallout> özellikleri

<ServiceCallout async="false" continueOnError="false" enabled="true" name="Service-Callout-1">

Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:

Özellik Açıklama Varsayılan Varlık
name

Politikanın dahili adı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğe

Politikayı name özelliğine ek olarak farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.

<DisplayName>Policy Display Name</DisplayName>
Varsayılan

Yok

Bu öğeyi çıkarırsanız politikanın name özelliğinin değeri: kullanılır.

Varlık İsteğe bağlı
Tür Dize

<Request> öğesi

API proxy'sinden diğer hizmete gönderilen istek mesajını içeren değişkeni belirtir. Değişken, akıştaki önceki bir politika tarafından oluşturulabilir veya değişkeni Hizmet Çağrısı politikasında satır içi olarak oluşturabilirsiniz.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <Remove>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Remove>
    <Copy>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Copy>
    <Add>
        <Headers/>
        <QueryParams/>
        <FormParams/>
    </Add>
    <Set>
        <Headers/>
        <QueryParams/>
        <FormParams/>
        <Payload/>
        <ReasonPhrase/>
        <StatusCode/>
        <Path/>
        <Version/>
        <Verb/>
    </Set>
</Request>

<Remove>, <Copy>, <Add> ve <Set> etiketlerinin söz dizimi, Assign Message politikası ile aynıdır.

İstek mesajı çözümlenemezse veya geçersiz bir istek mesajı türündeyse politika hata döndürür.

En basit örnekte, API proxy'sinin akışında daha önce doldurulmuş olan istek mesajını içeren bir değişkeni iletiyorsunuz:

<Request clearPayload="true" variable="myRequest"/>

Alternatif olarak, harici hizmete gönderilen istek mesajını Hizmet Çağrısı politikasında da doldurabilirsiniz:

<Request>
  <Set>
    <Headers>
      <Header name="Accept">application/json</Header>
    </Headers>
    <Verb>POST</Verb>
    <Payload contentType="application/json">{"message":"my test message"}</Payload>
  </Set>
  <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
Varsayılan İstek öğesini veya özelliklerinden herhangi birini atlarsanız Edge aşağıdaki varsayılan değerleri atar:

<Request clearPayload="true" variable="servicecallout.request"/>

Bu varsayılan değerlerin ne anlama geldiğine bakalım. İlk olarak, clearPayload=true, ServiceCallout politikası her yürütüldüğünde yeni bir istek nesnesi oluşturulduğu anlamına gelir. Bu, isteğin ve istek URI yolunun hiçbir zaman yeniden kullanılmadığı anlamına gelir. İkincisi, varsayılan değişken adı servicecallout.request, istek için ayrılmış bir addır ve ad sağlamazsanız isteğe atanır.

Veri maskeleme kullanıyorsanız bu varsayılan adı bilmeniz önemlidir. Değişken adını atlarsanız maske yapılandırmanıza servicecallout.request eklemeniz gerekir. Örneğin, yetkilendirme üstbilgisinin izleme oturumlarında görünmemesi için maskelemek istiyorsanız varsayılan adı yakalamak üzere maskeleme yapılandırmanıza aşağıdakileri ekleyebilirsiniz:

servicecallout.request.header.Authorization.

Varlık (Presence) İsteğe bağlıdır.
Tür Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
variable

İstek mesajını içerecek değişkenin adı.

servicecallout.request İsteğe bağlı
clearPayload

true ise istek mesajını içeren değişken, istek HTTP hedefine gönderildikten sonra istek mesajı tarafından kullanılan belleği boşaltmak için temizlenir.

clearPayload seçeneğini yalnızca hizmet çağrısı yürütüldükten sonra istek mesajı gerekiyorsa false olarak ayarlayın.

doğru İsteğe bağlı

<Request>/<IgnoreUnresolvedVariables> öğesi

Doğru olarak ayarlandığında politika, istekteki çözümlenmemiş değişken hatalarını yoksayar.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request>
Varsayılan yanlış
Varlık (Presence) İsteğe bağlı
Tür Boole

<Response> öğesi

API proxy mantığı, daha fazla işlem için uzak çağrıdan yanıt gerektirdiğinde bu öğeyi ekleyin.

Bu öğe mevcut olduğunda, harici hizmetten alınan yanıt mesajını içerecek değişkenin adını belirtir. Hedefin yanıtı, yalnızca yanıtın tamamı politika tarafından başarıyla okunduğunda değişkene atanır. Uzak arama herhangi bir nedenle başarısız olursa politika hata döndürür.

Bu öğe atlanırsa API proxy'si yanıt beklemez. API proxy'si akışının yürütülmesi, sonraki akış adımlarıyla devam eder. Ayrıca, açıkça belirtmek gerekirse Response öğesi olmadan hedeften gelen yanıt sonraki adımlar tarafından işlenemez ve proxy akışının uzak çağrıda bir hata algılaması mümkün değildir. ServiceCallout kullanılırken Response öğesinin atlanmasının yaygın bir kullanım alanı: iletileri harici bir sisteme kaydetmek.

 <Response>calloutResponse</Response>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Dize

<Timeout> öğesi

Hizmet Çağrısı politikasının hedeften yanıt bekleyeceği süre (milisaniye cinsinden). Bu değeri çalışma zamanında dinamik olarak ayarlayamazsınız. Hizmet çağrısı zaman aşımına uğrarsa Hataları işleme bölümünde açıklandığı gibi HTTP 500 döndürülür, politika başarısız olur ve API proxy'si hata durumuna geçer.

<Timeout>30000</Timeout>
Varsayılan 55.000 milisaniye (55 saniye), Apigee Edge'in varsayılan HTTP zaman aşımı ayarı
Varlık (Presence) İsteğe bağlı
Tür Tamsayı

<HTTPTargetConnection> öğesi

URL, TLS/SSL ve HTTP özellikleri gibi aktarım ayrıntılarını sağlar. <TargetEndpoint> Yapılandırma referansına bakın.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
Varsayılan Yok
Varlık (Presence) Zorunlu
Tür Yok

<HTTPTargetConnection>/<URL> öğesi

Çağrılan hizmetin URL'si:

<HTTPTargetConnection>
    <URL>http://example.com</URL>
</HTTPTargetConnection>

URL'nin bir bölümünü değişkenle dinamik olarak sağlayabilirsiniz. Ancak URL'nin protokol kısmı (aşağıdaki http://) bir değişkenle belirtilemez. Sonraki örnekte, bir sorgu parametresinin değerini belirtmek için değişken kullanıyorsunuz:

<URL>http://example.com/forecastrss?w=${request.header.woeid}</URL>

Alternatif olarak, URL yolunun bir bölümünü değişkenle ayarlayın:

<URL>http://example.com/{request.resourcePath}?w=${request.header.woeid}</URL>

URL'nin alanını ve bağlantı noktasını belirtmek için bir değişken kullanmak istiyorsanız yalnızca alan ve bağlantı noktası için bir değişken, URL'nin diğer kısımları için ise ikinci bir değişken kullanın:

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
Varsayılan Yok
Varlık (Presence) Zorunlu
Tür Dize

<HTTPTargetConnection>/<SSLInfo> öğesi

Arka uç hizmeti için TLS/SSL yapılandırması. TLS/SSL yapılandırmasıyla ilgili yardım için Uçtan arka uca (Cloud ve Private Cloud) TLS yapılandırma ve API proxy yapılandırma referansı'ndaki "TLS/SSL TargetEndpoint Yapılandırması" başlıklı makaleyi inceleyin.

<HTTPTargetConnection>
    <URL>https://example.com</URL>
    <SSLInfo>
        <Enabled>true</Enabled>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <KeyStore>ref://mykeystoreref</KeyStore>  ## Use of a reference is recommended
        <KeyAlias>myKey</KeyAlias>
        <TrustStore>myTruststore</TrustStore>
        <Ciphers/>
        <Protocols/>
    </SSLInfo>
</HTTPTargetConnection>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Yok

<HTTPTargetConnection>/<Properties> öğesi

Arka uç hizmetine HTTP taşıma özellikleri. Daha fazla bilgi için Uç nokta özellikleri referansı başlıklı makaleyi inceleyin.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <Properties>
        <Property name="allow.http10">true</Property>
        <Property name="request.retain.headers">
          User-Agent,Referer,Accept-Language
        </Property>
    </Properties>
</HTTPTargetConnection>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Yok

<HTTPTargetConnection>/<LoadBalancer> öğesi

Bir veya daha fazla hedef sunucuyu çağırın ve bu sunucularda yük dengeleme yapın. Örnekler bölümündeki Hedef sunucuları arama örneğini inceleyin. Ayrıca Arka uç sunucularında yük dengeleme başlıklı makaleye de bakın. Ayrıca, bu topluluk gönderisinde hem hizmet çağrısı politikasından hem de rota kuralları kullanılarak hedef sunucuların nasıl çağrılacağı açıklanmaktadır.

<HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="httpbin"/> <Server name="yahoo"/> </LoadBalancer> <Path>/get</Path> </HTTPTargetConnection>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Geçersiz

<LocalTargetConnection> öğesi

Hizmet çağrılarının hedefi olarak yerel bir proxy'yi (aynı kuruluş ve ortamdaki bir proxy) belirtir.

Hedefi daha ayrıntılı olarak belirtmek için <APIProxy> ve <ProxyEndpoint> öğelerini ya da <Path> öğesini kullanın.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
Varsayılan Yok
Varlık (Presence) Zorunlu
Tür Yok

<LocalTargetConnection>/<APIProxy> öğesi

Yerel çağrının hedefi olan bir API proxy'sinin adı. Proxy, çağrıyı yapan proxy ile aynı kuruluşta ve ortamda olmalıdır.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

<APIProxy> öğesinin yanı sıra, çağrı için hedeflenmesi gereken proxy uç noktasının adını belirtmek üzere <ProxyEndpoint> öğesini ekleyin.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection>
Varsayılan Yok
Varlık (Presence) Zorunlu
Tür Dize

<LocalTargetConnection>/<ProxyEndpoint> öğesi

Çağrıların hedefi olması gereken proxy uç noktasının adı. Bu, <APIProxy> öğesiyle belirtilen API proxy'sindeki bir proxy uç noktasıdır.

<LocalTargetConnection>
   <APIProxy>data-manager</APIProxy>
   <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Yok

<LocalTargetConnection>/<Path> öğesi

Hedeflenen uç noktaya giden yol. Uç nokta, çağrıyı yapan proxy ile aynı kuruluş ve ortamdaki bir proxy'yi referans almalıdır.

Proxy adını bilmiyorsanız veya proxy adına güvenemiyorsanız <APIProxy>/<ProxyEndpoint> çifti yerine bunu kullanın. Yol, güvenilir bir hedef olabilir.

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
Varsayılan Yok
Varlık (Presence) İsteğe bağlı
Tür Yok

Şemalar

Akış değişkenleri

Akış değişkenleri, HTTP üstbilgilerine, ileti içeriğine veya akış bağlamına göre politikaların ve akışların çalışma zamanında dinamik davranışını sağlar. Aşağıdaki önceden tanımlanmış Flow değişkenleri, bir hizmet çağrısı politikası yürütüldükten sonra kullanılabilir. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı başlıklı makaleyi inceleyin.

Hizmet açıklama metinlerinin kendi istek ve yanıtları vardır. Bu verilere değişkenler aracılığıyla erişebilirsiniz. Ana mesajda request.* ve response.* değişken önekleri kullanıldığından, hizmet açıklama metnine özel mesaj verilerini almak için myrequest.* ve calloutResponse.* öneklerini (hizmet açıklama metni yapılandırmasındaki varsayılanlar) kullanın. Aşağıdaki tablodaki ilk örnekte, hizmet çağrısında HTTP üstbilgilerini nasıl alacağınız gösterilmektedir.

Değişken Açıklama

Aşağıda, ana istek ve yanıttan üstbilgileri nasıl alacağınıza benzer şekilde, hizmet açıklama metni isteği ve yanıt üstbilgilerini alma örneği verilmiştir.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

Burada calloutResponse, hizmet çağrısındaki yanıtın değişken adı, myRequest ise isteğin değişken adıdır. Örneğin:

calloutResponse.header.Content-Length

Hizmet çağrısı yanıtının Content-Length başlığını döndürür.

Kapsam: Hizmet Çağrısı'ndan itibaren
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metni isteğindeki veya yanıtındaki bir ileti üstbilgisi. Örneğin, API proxy hedefi http://example.com ve Service Callout hedefi http://mocktarget.apigee.net ise bu değişkenler http://mocktarget.apigee.net adresine yapılan çağrının üstbilgileridir.

servicecallout.requesturi

Kapsam: Hizmet çağrısı isteğinden itibaren
Tür: Dize
İzin: Okuma/Yazma

ServiceCallout politikası için TargetEndpoint URI'si. URI, protokol ve alan adı belirtimi olmadan TargetEndpoint URL'sidir.

servicecallout.{policy-name}.target.url

Kapsam: Hizmet çağrısı isteğinden itibaren
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metni için hedef URL.

calloutResponse.content

burada calloutResponse, Hizmet Çağrısı yapılandırmasındaki <Response>değişken adıdır.

Kapsam: Hizmet çağrısı yanıtından itibaren
Tür: Dize
İzin: Okuma/Yazma

Hizmet çağrısından gelen yanıt gövdesi.

servicecallout.{policy-name}.expectedcn

Kapsam: Hizmet çağrısı isteğinden itibaren
Tür: Dize
İzin: Okuma/Yazma

ServiceCallout politikasında belirtilen TargetEndpoint'in beklenen Ortak Adı. Bu yalnızca TargetEndpoint bir TLS/SSL uç noktasına referans verdiğinde anlamlıdır.

servicecallout.{policy-name}.failed

Kapsam: Hizmet çağrısı yanıtından itibaren
Tür: Boole
İzin: Okuma/Yazma

Politikanın başarılı olup olmadığını belirten Boole değeri (başarılıysa false, başarısızsa true).

Hatalar

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.servicecallout.ExecutionFailed 500

Bu hata aşağıdaki durumlarda ortaya çıkabilir:

  • politikanın, hatalı veya başka bir şekilde geçersiz olan girişi işlemesi istenir.
  • arka uç hedef hizmeti bir hata durumu (varsayılan olarak 4xx veya 5xx) döndürür.
steps.servicecallout.RequestVariableNotMessageType 500 Politikada belirtilen İstek değişkeni Mesaj türünde değil. Örneğin, bir dize veya başka bir mesaj türünde değilse bu hatayı görürsünüz.
steps.servicecallout.RequestVariableNotRequestMessageType 500 Politikada belirtilen İstek değişkeni, İstek Mesajı türünde değil. Örneğin, Örneğin, Yanıt türü ise bu hatayı görürsünüz.

Dağıtım hataları

Bu politikayı içeren bir proxy dağıttığınızda bu hatalar oluşabilir.

Hata adı Neden Düzelt
URLMissing <HTTPTargetConnection> içindeki <URL> öğesi eksik veya boş.
ConnectionInfoMissing Bu hata, politikada <HTTPTargetConnection> veya <LocalTargetConnection> öğesine dokunun.
InvalidTimeoutValue Bu hata, <Timeout> değeri negatif veya sıfır olduğunda ortaya çıkar.

Hata değişkenleri

Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.

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 = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. servicecallout.SC-GetUserData.failed = true

Örnek hata yanıtı

{  
   "fault":{  
      "detail":{  
         "errorcode":"steps.servicecallout.RequestVariableNotMessageType"
      },
      "faultstring":"ServiceCallout[ServiceCalloutGetMockResponse]: 
            request variable data_str value is not of type Message"
   }
}

Örnek hata kuralı

<faultrule name="VariableOfNonMsgType"></faultrule><FaultRule name="RequestVariableNotMessageType">
    <Step>
        <Name>AM-RequestVariableNotMessageType</Name>
    </Step>
    <Condition>(fault.name = "RequestVariableNotMessageType")</Condition>
</FaultRule>

İlgili konular