Hizmet çağrısı politikası

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

Ne

Hizmet Açıklama Metni 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 (ör. aynı kuruluş ve ortamdaki bir API proxy'si) çağrı yapabilirsiniz.

  • Harici bir kullanım alanında, proxy'nizin dışındaki bir üçüncü taraf API'ye açıklama metni oluşturursunuz. Üçü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 Hedef Uç Noktası'na 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 kullanacağı ayrı alt düzey işlevler sunan bir proxy'niz olduğunda bunu faydalı 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'nin hedef proxy'si olabilir.

Politika, HTTP ve HTTPS üzerinden 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 ortamdaki bir API) yönelik bir açıklama metni 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'de 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 bunu 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çıklama Metni 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, Hizmet Çağrısı politikasına ulaşmadan önce isteğin oluşturulduğu başka bir örneği bulabilirsiniz.

<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, GeoCodeRequest adlı bir değişkenden alınır (bu değişken, örneğin bir AttributionMessage politikasıyla doldurulabilir). Yanıt mesajı, GeoCodeResponse adı verilen değişkene atanır. Bu değişken, Değişkenleri Ayıklama politikası ya da JavaScript ya da Java'da yazılmış özel bir 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 Metnini kullanan eksiksiz bir API proxy'si için, Mesaj Atama ve Değişken Ayıklama politikalarıyla birlikte Politika bileşimini kullanma bölümüne bakın.

Hedef sunucuları arama

<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ılmıştır. Proxy'niz için Hedef Sunucular ayarlama ve yük dengelemeyi yapılandırma hakkında bilgi edinmek üzere 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. yayınlamak için harici bir hizmete çağrı yapmak amacıyla bir API proxy'si yapılandırabilirsiniz.

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

  • İstek: Mesaj ata, uzak hizmete gönderilen istek mesajını doldurur.
  • Yanıt: Değişkenleri Çıkar seçeneği, yanıtı ayrıştırır ve belirli içeriği ayıklar.

Tipik Hizmet Çağrısı politika bileşimi şunları içerir:

  1. Mesaj Politikası Atayın: Bir istek mesajı oluşturur, HTTP üstbilgilerini, sorgu parametrelerini doldurur, HTTP fiilini vb. ayarlar.
  2. Hizmet Açıklama Metni 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.

    Daha iyi performans için şu Apigee Topluluğu iş parçacığında açıklandığı gibi Hizmet Açıklama Metni yanıtlarını da ö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çıklama Metni politikasını kullanan eksiksiz bir API proxy'si için Mesaj Atayın ve Değişkenleri Ayıklayın politikaları ile 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 belirtilmiş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 yaygın olarak kullanılan ö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 karakteri aşamaz.

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

Yok Zorunlu
continueOnError

Bir 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 true olarak ayarlayın.

yanlış İ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. Politika, bir akışa bağlı kalsa bile zorunlu kılınmaz.

true İsteğe bağlı
async

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

yanlış Kullanımdan kaldırıldı

<DisplayName> öğesi

Yönetim kullanıcı arayüzü proxy'sinde politikayı 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ı
Type 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 veya Hizmet Çağrısı politikasında satır içi olarak 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>

<Remove>, <Copy>, <Add> ve <Set> etiketlerinin söz dizimi, İleti 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 iletirsiniz:

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

Alternatif olarak, harici hizmete gönderilen istek mesajını Hizmet Çağrısı politikasının kendisinde de 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 deletePayload="true"variable="servicecallout.request"/>

Bu varsayılan değerlerin ne anlama geldiğine göz atalım. Birincisi, clearPayload=true, ServiceDescription 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ılmayacağı anlamına gelir. İkinci olarak, varsayılan değişken adı servicecallout.request, bir ad girmemeniz halinde 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ı gerekliyse false olarak ayarlayın.

true İsteğe bağlı

<Request>/<ignoreUnresolvedVariables> öğesi

Politika, true değerine ayarlandığında istekteki tüm çözümlenmemiş değişken hatalarını yoksayar.

<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ığının daha fazla işlem için uzak çağrıdan yanıt alması 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ışının yürütülmesi, sonraki tüm akış adımlarıyla devam eder. Ayrıca, bariz bir bilgiyi Response öğesi olmadan belirtmek gerekirse, hedeften gelen yanıt sonraki adımlarla işlenemez ve proxy akışının uzak çağrıda bir hata algılaması mümkün değildir. Mesajları harici bir sisteme günlüğe kaydetmek için ServiceDescription kullanılırken Response öğesinin atlanması için yaygın bir kullanımdır.

 <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 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 bir hata durumuna girer.

<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ı sağlar. <TargetEndpoint> yapılandırma referansına bakın.

<HTTPTargetConnection>
    <URL>http://example.com</URL>
    <LoadBalancer/>
    <SSLInfo/>
    <Properties/>
</HTTPTargetConnection>
Varsayılan Yok
Bulunma Zorunlu
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ı 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 değişken kullanıyorsunuz:

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

Veya URL yolunun bir kısmını değişkenle ayarlayın:

<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 ve bağlantı noktası için bir değişken, URL'nin diğer tüm bölümü için ise ikinci bir değişken kullanın:

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

<HTTPTargetConnection>/<SSLInfo> öğesi

Arka uç hizmetine TLS/SSL yapılandırması. TLS/SSL yapılandırmasıyla ilgili yardım almak için API proxy yapılandırması referansı bölümündeki Edge'den arka uca TLS'yi yapılandırma (Cloud ve Private Cloud) ve "TLS/SSL TargetEndpoint Configuration" (TLS/SSL TargetEndpoint 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 aktarım özellikleri. Daha fazla bilgi için Uç nokta özellikleri referansı bölümüne bakın.

<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çıklama metni politikasından ve Rota Kurallarını kullanarak hedef sunucuları çağırma yöntemlerini ele alan bu topluluk yayınına da 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 Yok

<LocalTargetConnection> öğesi

Hizmet açıklama metinlerinin hedefi olarak bir yerel proxy'yi (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 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ş 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 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'sinde bulunan 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 ortamda bulunan bir proxy'ye başvuruda bulunmalıdır.

Proxy adını bilmediğinizde veya güvenemediğinizde <APIProxy>/<ProxyEndpoint> çifti yerine bu alanı 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, çalışma zamanında politikaların ve Akışların HTTP üstbilgilerine, mesaj içeriğine veya Akış içeriğine göre dinamik davranışını etkinleştirir. Aşağıdaki önceden tanımlanmış Akış 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ı bölümüne bakın.

Hizmet çağrılarının kendi istekleri ve yanıtları 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ğrısı'nda HTTP üst bilgilerini nasıl alacağınız gösterilmektedir.

Değişken Açıklama

Aşağıda, ana istek ve yanıttan üstbilgiler almak için kullanacağınız yönteme benzer 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çıklama Metnindeki Yanıtın değişken adı, myRequest ise İstek için değişken adıdır. Örneğin:

calloutResponse.header.Content-Length

Hizmet Açıklama Metni yanıtının Content-Length (İçerik Uzunluğu) üstbilgisini döndürür.

Kapsam: Hizmet Açıklaması'ndan itibaren
Tür: Dize
İzin: Okuma/Yazma

Hizmet metni isteği veya yanıtındaki 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 metni isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Serviceça politikası için TargetEndpoint URI'si. URI, protokol ve alan adı spesifikasyonu olmadan TargetEndpoint URL'sidir.

servicecallout.{policy-name}.target.url

Kapsam: Hizmet metni isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

Hizmet açıklama metninin hedef URL'sidir.

calloutResponse.content

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

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

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

servicecallout.{policy-name}.expectedcn

Kapsam: Hizmet metni isteğinden yönlendirme
Tür: Dize
İzin: Okuma/Yazma

ServiceDescription politikasında belirtilen 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çıklaması 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, döndürülen hata kodları ve hata mesajları ile bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiler, hataları ele alacak hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme hakkında bilgi edinin.

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

  • politikadan, hatalı biçimlendirilmiş veya geçersiz olan girişleri işlemesi istenir.
  • arka uç hedef hizmeti bir 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, bir dize veya mesaj harici başka bir türse 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, yanıt türündeyse bu hata gösterilir.

Dağıtım hataları

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

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

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 listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son parçasıdır. fault.name = "RequestVariableNotMessageType"
servicecallout.policy_name.failed policy_name, hatayı tetikleyen 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