Hizmet çağrısı politikası

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

Ne

Hizmet Çağrı Politikası, API proxy akışınızdan başka bir hizmeti çağırmanıza olanak tanır. Harici bir hizmete (harici RESTful hizmet uç noktası gibi) veya dahili hizmetlere (aynı kuruluş ve ortamdaki bir API proxy'si gibi) çağrı yapabilirsiniz.

  • Harici bir kullanım durumunda, proxy'nizin dışındaki bir üçüncü taraf API'ye ç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 "derlenir". Ayrıca istek akışında Hizmet Çağrı Politikası'nı kullanarak istekte bulunabilir, ardından yanıttaki bilgileri API proxy'sinin TargetEndpoint'ine aktarabilirsiniz.
  • Başka bir kullanım durumunda, çağrı yaptığınız kuruluş ve ortamda bulunan bir proxy'yi çağırırsınız. Örneğin, bir veya daha fazla proxy'nin tüketeceği münferit alt düzey işlevler sunan bir proxy'niz olduğunda bunu yararlı bulabilirsiniz. Örneğin, bir arka uç veri deposuna sahip oluşturma/okuma/güncelleme/silme işlemlerini açığa çıkaran bir proxy, verileri istemcilere sunan diğer birden çok proxy için hedef proxy olabilir.

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

Örnekler

Dahili proxy'ye yerel çağrı

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

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

Değişken olarak URL

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

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

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

<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 Mesaj Ata gibi bir politika kullanmak yerine, bu politikayı doğrudan Hizmet Çağrısı politikasında tanımlayabilirsiniz. Bu örnekte, Hizmet Çağrısı politikası, harici hizmete aktarılan üç sorgu parametresinin değerini ayarlar. Hizmet Açıklaması politikasında yük, kodlama türü (ör. application/xml, üstbilgiler, form parametreleri vb.) belirten bir istek mesajının tamamını oluşturabilirsiniz.

Aşağıda, Hizmetin Açıklama Metni politikasına ulaşmadan önce isteğin oluşturulduğu başka bir örneği görebilirsiniz.

<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 mesajının içeriği, GeocodingRequest adlı bir değişkenden çıkarılır (örneğin, bir AttributionMessage politikası tarafından doldurulabilir). Yanıt mesajı, GeocodingResponse adlı değişkene atanır. Burada, Değişkenleri Çıkar politikası veya JavaScript ya da Java'da yazılmış özel kod tarafından ayrıştırılabilir. Politika, zaman aşımına uğramadan önce Google Coğrafi Kodlama API'sinin yanıtı için 30 saniye bekler.

Bu örnek Hizmet Çağrısı'nın yanı sıra Mesaj Ata ve Değişken Ayıklama politikalarını kullanan eksiksiz bir API proxy'si örneği için Politika bileşimini kullanma bölümüne bakın.

Hedef sunucuları çağırma

<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 bu sunucular 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ılmıştır. Proxy'niz için Hedef Sunucular ayarlama ve yük dengelemeyi yapılandırma hakkında bilgi edinmek için Arka uç sunucular arasında yük dengeleme bölümüne bakın.


Hizmet 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. göndermek amacıyla harici bir hizmete çağrı yapacak şekilde bir API proxy'si yapılandırabilirsiniz.

Ek bilgi genellikle diğer iki politikayla kullanılır: Mesaj Ata ve Değişkenleri Ayıkla.

  • Request (İstek): 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çeriği çıkarır.

Hizmet Çağrısı politikalarının tipik yapısı şunlardır:

  1. Mesaj Politikası Atayın: Bir istek mesajı oluşturur, HTTP üstbilgilerini, sorgu parametrelerini doldurur, HTTP fiilini ayarlar vb.
  2. Hizmet Çağrısı politikası: Mesaj Ata 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 Hizmet Çağrısı yanıtlarını da şu Apigee Topluluğu iş parçacığında açıklandığı gibi önbelleğe alabilirsiniz: https://community.apigee.com/questions/34110/how-can-i-store-the-results-of-the-servicecallout.html.
  3. Değişkenleri Ayıklama politikası: Genellikle Hizmet Çağrısı tarafından oluşturulan mesajı ayrıştıran bir JSONPath veya XPath ifadesi tanımlar. Politika daha sonra Hizmet Çağrısı yanıtından ayrıştırılan değerleri içeren değişkenleri ayarlar.

Hizmet Çağrısı politikasını kullanan tam bir örnek API proxy'si için Mesaj Ata ve Değişken Ayıklama politikalarıyla birlikte 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>

<ServiceDescription> ö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çerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

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

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<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ışta daha önceki bir politika tarafından veya Hizmet Çağrı Politikası politikasında satır içinde oluşturulabilir.

<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>

<Kaldır>, <Kopyala>, <Ekle> ve <Ayarla> etiketlerinin söz dizimi, Mesaj Ata politikası ile aynıdır.

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

En basit örnekte, API proxy'sinin akışında daha önce doldurulan istek mesajını içeren bir değişken geçirirsiniz:

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

Alternatif olarak, harici hizmete gönderilen istek mesajını Hizmet Açıklama Metni 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 çıkarırsanı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. Birincisi, clearPayload=true politikası her yürütüldüğünde yeni bir istek nesnesinin oluşturulacağı anlamına gelir. Bu, isteğin ve istek URI'sı yolunun hiçbir zaman yeniden kullanılmadığı anlamına gelir. İkinci olarak, varsayılan değişken adı servicecallout.request, bir ad sağlamamanız durumunda isteğe atanan ayrılmış bir addır.

Veri maskeleme kullanıyorsanız bu varsayılan adı bilmeniz önemlidir. Değişken adını çıkarırsanız maske yapılandırmanıza servicecallout.request eklemeniz gerekir. Örneğin, Yetkilendirme üst bilgisini İzleme oturumlarında görünmeyecek şekilde maskelemek istiyorsanız varsayılan adı yakalamak için maskeleme yapılandırmanıza aşağıdakileri eklersiniz:

servicecallout.request.header.Authorization.

Bulunma İsteğe bağlı.
Tür Yok

Özellikler

Özellik Açıklama Varsayılan Varlık
değişken

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

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

true ise istek mesajı tarafından kullanılan bellekte yer açmak için istek HTTP hedefine gönderildikten sonra istek mesajını içeren değişken silinir.

clearPayload seçeneğini yalnızca, Hizmet Çağrısı yürütüldükten sonra istek mesajının gerekli olması durumunda false olarak ayarlayın.

true İsteğe bağlı

<Request>/<ignoreUnresolvedVariables> öğesi

true (doğru) değerine ayarlandığında politika, istekteki çözümlenmemiş değişken hatalarını yok sayar.

<Request clearPayload="true" variable="myRequest">
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
</Request> 
Varsayılan false
Bulunma İsteğe bağlı
Tür Boole

<Response> öğesi

API proxy mantığı, daha fazla işlem için uzak çağrıdan yanıt verilmesi gerektiğ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. Hedeften gelen yanıt, yalnızca yanıtın tamamı politika tarafından başarıyla okunduğunda değişkene atanır. Uzak çağrı herhangi bir nedenle başarısız olursa politika bir hata döndürür.

Bu öğe atlanırsa API proxy'si yanıt beklemez. API Proxy akışı yürütme işlemi, sonraki tüm akış adımlarıyla devam eder. Ayrıca, bariz olanı Response öğesi olmadan belirtmek gerekirse hedeften gelen yanıt sonraki adımlarda işlenmeye uygun değildir ve proxy akışının uzak çağrıdaki bir hatayı algılaması mümkün değildir. ServiceCall'u kullanırken mesajları harici bir sisteme günlüğe kaydetmek amacıyla Response öğesinin atlanması için yaygın olarak kullanılan bir uygulama.

 <Response>calloutResponse</Response> 
Varsayılan Yok
Bulunma İsteğe bağlı
Tür Dize

<Timeout> öğesi

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

<Timeout>30000</Timeout>
Varsayılan 55.000 milisaniye (55 saniye), Apigee Edge için varsayılan HTTP zaman aşımı ayarı
Bulunma İ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
Bulunma Gerekli
Tür Yok

<HTTPTargetConnection>/<URL> öğesi

Çağrılan hizmetin URL'si:

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

URL'nin bir kısmını bir değişkenle dinamik olarak sağlayabilirsiniz. Ancak, URL'nin protokol kısmı (aşağıdaki http://) bir değişken tarafından belirtilemez. Sonraki örnekte, sorgu parametresinin değerini belirtmek için bir değişken kullanacaksınız:

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

Alternatif olarak, URL yolunun bir kısmını değişkenle de ayarlayabilirsiniz:

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

URL'nin alan adını ve bağlantı noktasını belirtmek için bir değişken kullanmak istiyorsanız yalnızca alan adı ve bağlantı noktası için bir değişken ve URL'nin diğer herhangi bir bölümü için ikinci bir değişken kullanın:

<URL>http://{request.dom_port}/{request.resourcePath}</URL>
Varsayılan Yok
Bulunma Gerekli
Tür Dize

<HTTPTargetConnection>/<SSLInfo> öğesi

Arka uç hizmetinde TLS/SSL yapılandırması. TLS/SSL yapılandırmasıyla ilgili yardım almak için API proxy yapılandırma referansı bölümündeki Uçtan arka uca TLS'yi yapılandırma (Cloud ve Private Cloud) ve "TLS/SSL TargetEndpoint Configuration" (TLS/SSL Hedef Uç Yapılandırması) bölümlerine bakın.

<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
Bulunma İsteğe bağlı
Tür Yok

<HTTPTargetConnection>/<Properties> öğesi

Arka uç hizmetine HTTP aktarma ö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
Bulunma İsteğe bağlı
Tür Yok

<HTTPTargetConnection>/<LoadBalancer> öğesi

Bir veya daha fazla hedef sunucuyu çağırın ve bunlar üzerinde yük dengeleme yapın. Sana Özel bölümündeki Arama hedef sunucuları örneğine bakın. Arka uç sunucuları arasında yük dengeleme bölümünü de inceleyin. Ayrıca, Hizmet Açıklaması politikasından ve Rota Kurallarını kullanarak hedef sunucuları çağırma yöntemlerini açıklayan bu topluluk gönderisine de göz atın.

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

<LocalTargetConnection> öğesi

Hizmet açıklama metinlerinin hedefi olarak yerel bir proxy'yi (yani aynı kuruluş ve ortamdaki bir proxy) belirtir.

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

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
   <Path/>
</LocalTargetConnection>
Varsayılan Yok
Bulunma Gerekli
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ş ve ortamda olmalıdır.

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

Çağrı için hedeflenmesi gereken proxy uç noktasının adını belirtmek için <APIProxy> öğesiyle birlikte <ProxyEndpoint> öğesini ekleyin.

<LocalTargetConnection>
   <APIProxy/>
   <ProxyEndpoint/>
</LocalTargetConnection> 
Varsayılan Yok
Bulunma Gerekli
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
Bulunma İsteğe bağlı
Tür Yok

<LocalTargetConnection>/<Path> öğesi

Hedeflenen uç noktaya giden bir yol. Uç nokta, çağrıyı yapan proxy ile aynı kuruluş ve ortamdaki bir proxy'ye başvuruda bulunmalıdır.

Proxy adını bilmediğinizde veya güvenemediğinizde <APIProxy>/<ProxyEndpoint> çifti yerine bunu kullanın. Yol, güvenilir bir hedef olabilir.

<LocalTargetConnection>
   <Path>/data-manager</Path>
</LocalTargetConnection>
Varsayılan Yok
Bulunma İsteğe bağlı
Tür Yok

Şemalar

Akış değişkenleri

Akış değişkenleri, HTTP üstbilgileri, mesaj içeriği veya Akış bağlamına göre çalışma zamanında politikaların ve Akışların dinamik davranışını etkinleştirir. Aşağıdaki önceden tanımlanmış Akış değişkenleri, bir Hizmet Çağrı Politikası 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 isteği ve yanıtı vardır. Bu verilere değişkenler aracılığıyla erişebilirsiniz. Ana mesaj, request.* ve response.* değişken öneklerini kullandığından Hizmet Açıklama Metni'ne ö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çıklama metninde HTTP üst bilgilerini nasıl alacağınız gösterilmektedir.

Değişken Açıklama

Aşağıda, ana istek ve yanıttan üstbilgiler almaya benzer şekilde bir Hizmet Çağrısı isteği ve yanıt başlığı alma örneği verilmiştir.

calloutResponse.header.HeaderName

myRequest.header.HeaderName

burada calloutResponse Hizmet Açıklaması'ndaki Yanıtın değişken adı, myRequest ise İsteğin değişken adıdır. Örneğin:

calloutResponse.header.Content-Length

Hizmet Çağrısı yanıtının Content-Length (İçerik Uzunluğu) başlığını döndürür.

Kapsam: Hizmet açıklama metninden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metni isteği veya yanıtındaki bir mesaj üstbilgisi. Örneğin, API proxy hedefi http://example.com ve Hizmet Açıklama Metni hedefi http://mocktarget.impression.net ise bu değişkenler http://mocktarget.Apigee.net çağrısının başlıklarıdır.

servicecallout.requesturi

Kapsam: Hizmet Açıklaması isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

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

servicecallout.{policy-name}.target.url

Kapsam: Hizmet Açıklaması isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metninin hedef URL'si.

calloutResponse.content

Burada calloutResponse, Hizmet Açıklama Metni yapılandırmasındaki <Response>değişken adıdır.

Kapsam: Hizmet Açıklaması yanıtından yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metnindeki yanıt gövdesi.

servicecallout.{policy-name}.expectedcn

Kapsam: Hizmet Açıklaması isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Bir ServiceCall politikasında belirtildiği üzere TargetEndpoint'in beklenen Ortak Adı. Bu yalnızca TargetEndpoint'in bir TLS/SSL uç noktasına işaret etmesi durumunda anlamlıdır.

servicecallout.{policy-name}.failed

Kapsam: Hizmet açıklama metni yanıtından ileriye
Tür: Boole
İzin: Okuma/Yazma

Politikanın başarılı, yanlış veya başarısız olduğunu (doğru) belirten boole değeri.

Hatalar

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.servicecallout.ExecutionFailed 500

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

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

Dağıtım hataları

Bu hatalar, bu politikayı içeren bir proxy dağıttığınızda ortaya çıkabilir.

Hata adı Neden Düzelt
URLMissing <HTTPTargetConnection> içindeki <URL> öğesi eksik veya boş.
ConnectionInfoMissing Politikanın <HTTPTargetConnection> veya <LocalTargetConnection> öğesi yoksa bu hata oluşur.
InvalidTimeoutValue <Timeout> değeri negatif veya sıfırsa bu hata oluşur.

Hata değişkenleri

Bu değişkenler, bir çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name = "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"
   }
}

Hata kuralı örneği

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

İlgili konular