Bir proxy'nin akışlarla nasıl çalışacağını kontrol etme

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

Her uygulama programlama modelinde işleme akışını kontrol etme yöntemi bulunur. API proxy'sinde bu işlem akışlarla yapılır. Akışlara mantık, koşul ifadeleri, hata işleme vb. eklersiniz. Neyin ne zaman olacağını kontrol etmek için akışları kullanırsınız.

Akışlar, API istek işleme yolunda sıralı aşamalardır. Bir API anahtarını doğrulamak gibi bir proxy mantığı eklediğinizde, mantığı bir akış tarafından belirtilen sıraya adım olarak eklersiniz. Mantığın yürütülüp yürütülmeyeceğini ve ne zaman yürütüleceğini belirtmek için bir koşul tanımladığınızda koşulu bir akışa eklersiniz.

Aşağıdaki akış yapılandırması örneği, gelen istek yolu / ile bitiyorsa ve isteğinin HTTP fiili GET ise VerifyAPIKey politikasının yürütüldüğü bir akış tanımlar.

<Flow name="Get Food Carts">
    <Description>Get Food Carts</Description>
    <Request>
        <Step>
            <Name>Verify-API-Key</Name>
        </Step>
    </Request>
    <Condition>(proxy.pathsuffix MatchesPath "/") and (request.verb = "GET")</Condition>
</Flow>

Akışın <Name> öğesindeki Verify-API-Key değeri, aşağıdaki gibi XML ile proxy'nin başka bir yerinde yapılandırılmış bir politikayı dahil eder:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
    <DisplayName>Verify API Key</DisplayName>
    <Properties/>
    <APIKey ref="request.header.x-api-key"/>
</VerifyAPIKey>

Akış yürütme sırasını tasarlama

Mantığın işleme yolu boyunca doğru sırada yürütülmesi için akışları yapılandırırsınız.

Mantık nereye ekleyeceğinize karar verirken ilk olarak mantığı, proxy uç noktasına mı yoksa hedef uç noktasına mı ekleyeceğinizi seçersiniz. API proxy'si, kodunu proxy'nin istemciyle (proxy uç noktası) etkileşime geçen kod ve varsa proxy'nin arka uç hedefiyle (hedef uç noktası) etkileşime geçen isteğe bağlı kod olarak böler.

Her iki uç nokta da burada açıklandığı gibi akış içerir:

Uç nokta türü Açıklama Desteklenen akışlar
ProxyEndpoint İstemciye en yakın API proxy akışlarını içerir. Mantığın önce istemciden gelen istek üzerine, sonra da istemciye verilen yanıta göre işlem yapması için yerler sunar. PreFlow, koşullu akışlar, PostFlow, PostClientFlow
TargetEndpoint Arka uç kaynağına en yakın API proxy akışlarını içerir. Bir arka uç kaynağı için istek hazırlama ve ardından verilen yanıtı işleme mantığı için yerler sunar. PreFlow, koşullu akışlar, PostFlow

Akışı, neyin ve hangi sırayla yapılması gerektiğini belirten XML ile yapılandırırsınız. Aşağıdaki görselde, proxy uç noktası ve hedef uç noktası içinde akışların nasıl sırayla düzenlendiği gösterilmektedir:

HTTP istemcisinin, HTTP hizmetine ulaşmak için Proxy uç noktasından arka uçtaki hedef uç noktaya gönderdiği istek. Her istek ve yanıt panelinde ön akış, koşullu akışlar ve son akış gösterilir. Ayrıca, proxy uç noktası ve hedef uç nokta örnekleri verilmiştir.

Proxy uç noktası ve hedef uç noktasının her biri, aşağıdaki sırayla düzenleyebileceğiniz akışlar içerir:

Konum Akış türü Açıklama
1 PreFlow

Belirli bir kodun başka herhangi bir şey olmadan yürütüldüğünden emin olmanız gerektiğinde kullanışlıdır.

PreFlow bir hedef uç noktasındaysa proxy uç noktasının PostFlow'undan sonra yürütülür.

2 Koşullu Akış

Koşullu mantığın bulunduğu yer. PreFlow'dan sonra ve PostFlow'dan önce yürütülür.

Segment başına yalnızca bir koşullu akış yürütülür (koşulu doğru olarak değerlendirilen ilk akış). Bu, aşağıdakilerin her birinin parçası olarak bir koşullu akışın yürütülebileceği anlamına gelir:
  • ProxyEndpoint'in istek ardışık düzeni
  • TargetEndpoint'in istek ardışık düzeni
  • ProxyEndpoint'in yanıt ardışık düzeni
  • TargetEndpoint'in yanıt ardışık düzeni
3 PostFlow

Verileri günlüğe kaydetmek, istek işlenirken bir şey olduğuyla ilgili bildirim göndermek ve diğer işlemler için iyi bir yerdir. Koşullu akışlar ve ön akıştan sonra yürütülür.

Son akış bir proxy uç noktasındaysa ve bir hedef uç noktası varsa proxy uç noktası son akışı, hedef uç noktası ön akışında

4 PostClientFlow (yalnızca proxy akışı) İstemciye bir yanıt döndürüldükten sonra mesajların günlüğe kaydedilmesine yönelik akış.

Kodun önce bir ön akışla yürütülmesi

Önceden akışı, başka bir şey gerçekleşmeden önce belirli bir kodun yürütüldüğünden emin olmanız gerektiğinde kullanışlıdır.

PreFlow, proxy uç noktalarında istemci kimliğini doğrulayan ve istemcilerden gelen trafiği sınırlayan kodlar için ideal bir yerdir. Arka uç hedefine istek göndermeye hazırlandığı bir hedef uç noktasında PreFlow, isteği göndermeye hazırlanırken ilk adımlar için idealdir.

Örneğin, kotasını aşan bir istemciye genellikle hizmet vermek istemezsiniz. Bu koşulları desteklemek için güvenlik ve kota politikalarını PreFlow segmentine yerleştirirsiniz. Böylece, bir koşulun daha sonraki bir koşullu akışta değerlendirilememesi konusunda endişelenmenize gerek kalmaz. Bu akıştaki politikalar, her zaman başka herhangi bir işleme yapılmadan önce uygulanır.

Aşağıdaki örnekte SpikeArrest ve Kota politikaları, işleme koşullu akışlara geçmeden önce yürütülür.

<PreFlow name="MyPreFlow">
    <Request>
        <Step>
            <Name>Spike-Arrest</Name>
        </Step>
        <Step>
            <Name>Quota</Name>
        </Step>
    </Request>
    <Response/>
</PreFlow>

Kodun koşullu akışla koşullu olarak yürütülmesini sağlama

Ön akış ile son akış arasında koşullu olarak yürütülen akışlar olabilir. Bu size birden fazla mantık dizisi yapılandırma imkanı tanır ancak proxy'nizin durumuna göre yalnızca bir tane yürütülsün. PreFlow veya PostFlow'da tüm mantığı yürütebiliyorsanız ve hiçbir koşul gerekmiyorsa (diğer bir deyişle, uç noktadan yalnızca bir yol destekleniyorsa) koşullu akış isteğe bağlıdır.

Her akış, farklı durum değerlerini test eden bir koşul belirtir. Bu, yürütmeyi koşullara göre etkili bir şekilde dallara ayırır. Örneğin, XML'yi yalnızca istekte bulunan uygulama bir mobil cihazda çalışırken JSON'a dönüştürmek isteyebilirsiniz.

Burada kota kısıtlamaları yalnızca istek, /issue/** URI kalıbı olan (/sorun/ URI'da son eğik çizgiden sonraki herhangi bir şey) olan bir GET isteği olduğunda uygulanır.

<Flow name="MyFlow">
    <Description/>
    <Request>
        <Step>
            <Name>Quota</Name>
        </Step>
    </Request>
    <Response/>
    <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
</Flow>

Koşulları belirtmek için akış değişkenlerini kullanırsınız. Koşullarda değişkenleri kullanma hakkında daha fazla bilgi için Akış değişkenleri olan koşullar bölümüne bakın.

Koşullarda kalıp eşleştirmeyi kullanma örnekleri için Kalıp eşleştirme bölümüne bakın.

PostFlow ile temel mantıktan sonra kodun yürütülmesini sağlama

PostFlow, uç noktanızın temel mantığından sonra ve uç nokta işleme tamamlanmadan işlem gerçekleştirmek için ideal bir yerdir. Sonraki akış, koşullu akışlar ve Önceki Akış&#39;tan sonra yürütülür.

PostFlow, verileri günlüğe kaydetmek, bir şey olduğuyla ilgili bildirim göndermek, yanıt mesajı biçimini değiştirmek ve diğer işlemler için iyi bir yerdir.

Aşağıdaki örnekte, SetResponseHeaders adlı bir Atama Politikası, Apigee Edge yanıtı istemciye geri göndermeden önce yanıt mesajının üstbilgilerini ayarlıyor.

<PostFlow>
    <Response>
        <Step>
            <Name>SetResponseHeaders</Name>
        </Step>
    </Response>
 </PostFlow>

Kodun istemci, proxy'nizin bir PostClientFlow yanıtını aldıktan sonra yürütülmesini sağlama

PostClientFlow'da aşağıdaki politikalar yer alabilir:

* Flow callout politikası yalnızca PostClientFlow'da bulunma ölçütlerini karşılayan (yani yalnızca uyumlu politikalar içeren) paylaşılan akışları çağırabilir.

Bir tane eklerseniz PostClientFlow, yürütülecek son akış olur ve istemciye bir yanıt gönderildikten sonra yürütülür.

PostClientFlow, son günlük kaydı için uygundur. Ayrıca, yanıt mesajının başlangıç ve bitiş zaman damgalarını da günlüğe kaydedebilirsiniz.

MessageLogging politikası ekli bir PostClientFlow örneğini burada bulabilirsiniz.

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

Video: Geliştiriciler İçin Dört Dakikalık Videolar (4MV4D) serisinin MessageLogging politikasını kullanarak PostClientFlow'un nasıl oluşturulacağını gösteren bu kısa videoya göz atın.

Daha fazla bilgi için aşağıdaki sayfaları inceleyin:

Akışlara mantık ekleme

Proxy'nize mantık eklediğinizde bunu proxy'nizin akışlarına politikalar ekleyerek yaparsınız. Akışların bir dizide yürütülmesine (bu konuda açıklandığı üzere PreFlow, ardından Akış ve PostFlow) benzer şekilde, akışın içerikleri de sırayla yürütülür.

Aşağıdaki örnek akış yapılandırması, üç politikaya (kendi XML dosyalarında başka bir yerde yapılandırılmış) referans verir. Verify-API-Key tarafından referans verilen politika, Remove-API-Key tarafından referans verilen politikadan önce yürütülür. Her ikisinin ardından Quota tarafından temsil edilen politika yürütülür.

<Flow name="Get Food Cart Menus">
    <Description>Get Food Cart Menus</Description>
    <Request>
        <Step>
            <Name>Verify-API-Key</Name>
        </Step>
        <Step>
            <Name>Remove-API-Key</Name>
        </Step>
        <Step>
            <Name>Quota</Name>
        </Step>
    </Request>
    <Condition>(proxy.pathsuffix MatchesPath "/") and (request.verb = "GET")</Condition>
</Flow>

Apigee Edge konsolunda bu politika dizisi, her simgenin politikayı temsil ettiği bir dizi simge halinde sunulur.

Apigee Edge konsolunda bu politika dizisi, her simgenin politikayı temsil ettiği bir dizi simge şeklinde sunulmaktadır. İstek yolunda gösterilen simgeler şunlardır: API anahtarını doğrula, API anahtarını kaldır ve Kota

Akışlarda hata ayıklama

Apigee Edge Trace aracı, API proxy'nizdeki mantığın bir istekten sonra nasıl yürütüldüğünü görmenizi sağlayan grafik bir yöntem sunar. Araç, istek ile yanıt arasındaki işlemleri gösterir. Bu örnekte PreFlow, koşullu akışlar ve PostFlow arasındaki ayrım özel olarak gösterilmemiştir.

Proxy'leri izleme hakkında daha fazla bilgi için İzleme aracını kullanma başlıklı makaleyi inceleyin.

Akışlardaki hataları işleme

Bir API proxy'sinde, akışlar da dahil olmak üzere çeşitli yerlerden hataları bildirebilirsiniz.

Aşağıdaki örnek, hedef uç noktadaki bir ön akıştan gelen yanıt dizesini gösterir. Diğer bir deyişle, arka uç hedefinden yanıt alındıktan hemen sonra yürütülen koddur. Bu örnekte, hedeften gelen yanıt 200 (başarı) değilse bir hata bildirilmiştir.

<PreFlow name="PreFlow">
    <Response>
        <Step>
            <Name>RaiseFault</Name>
            <Condition>(response.status.code GreaterThan "200")</Condition>
        </Step>
    </Response>
</PreFlow>

Hata işleme hakkında daha fazla bilgi için Hataları işleme bölümüne bakın.