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

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

Tüm uygulama programlama modelleri, işleme akışını kontrol etmek için bir yöntem içerir. 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 isteği işleme yolundaki sıralı aşamalardır. API anahtarını doğrulamak gibi bir proxy mantığı eklediğinizde, bu mantığı bir akış tarafından belirtilen adım sırasında eklemiş olursunuz. 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 bitiyor ve isteğin HTTP fiili GET ise ifVerifyAPIKey politikasının yürütüleceği 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, proxy'nin başka bir yerinde XML ile aşağıdaki gibi yapılandırılmış bir politikayı içerir:

<?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ı tasarlama

Akışları, işleme yolu boyunca mantığın doğru sırada yürütülmesini sağlayacak şekilde yapılandırırsınız.

Mantığın nereye ekleneceğine karar verirken ilk olarak onu bir proxy uç noktasına mı yoksa hedef uç noktaya mı ekleyeceğinizi seçersiniz. API proxy'si, kodunu proxy'nin istemcisiyle etkileşime giren kod (proxy uç noktası) ve varsa proxy'nin arka uç hedefiyle (hedef uç nokta) etkileşime giren isteğe bağlı kod arasında böler.

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

Uç nokta türü Açıklama Desteklenen akışlar
ProxyEndpoint İstemciye en yakın API proxy akışlarını içerir. Önce istemciden gelen istek üzerine sonra da istemciye verilen yanıtta işlem mantığı için yerler sağlar. 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ğından istek hazırlayıp ardından yanıtı işlemesi için mantık için yerler sağlar. PreFlow, koşullu akışlar, PostFlow

Akışı, ne olması gerektiğini ve hangi sırada olduğunu belirten XML ile yapılandırırsınız. Aşağıdaki çizimde, akışların bir proxy uç noktası ve hedef uç nokta içinde sıralı olarak nasıl sıralandığı gösterilmektedir:

HTTP hizmetine ulaşmak için, proxy Uç Noktası&#39;ndan arka uçtaki Hedef Uç Nokta&#39;ya geçen HTTP istemcisinden istek. Her istek ve yanıt panelinde önceden akış, koşullu akışlar ve yayın sonrası akışlar gösterilir. Ayrıca, proxy uç noktası ve hedef uç nokta örnekleri verilmiştir.

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

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

Başka her şey olmadan önce belirli bir kodun çalıştığından emin olmanız gerektiğinde yararlı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 yeri. 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ğıdakilerden her birinin parçası olarak yürütülecek bir koşullu akışa sahip olabileceğiniz 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ğuna dair bildirim göndermek ve benzeri işlemler için iyi bir yerdir. Koşullu akışlar ve PreFlow'dan sonra yürütülür.

PostFlow bir proxy uç noktasındaysa ve bir hedef uç nokta varsa PostFlow proxy uç noktası hedef uç noktası PreFlow'dan önce yürütülür.

4 PostClientFlow (yalnızca proxy akışı) İstemciye bir yanıt döndürüldükten sonra mesajların günlüğe kaydedilmesi için kullanılan bir akış.

Bir PreFlow ile önce kodun yürütülmesini sağlama

PreFlow, belirli kodların başka her şey olmadan önce çalıştığından emin olmanız gerektiğinde yararlıdır.

Proxy uç noktasında, PreFlow, istemcinin kimliğini doğrulayan ve istemcilerden gelen trafiği sınırlayan kod için mükemmel bir yerdir. PreFlow, arka uç hedefine istek göndermeye hazırlanmaya başladığı hedef uç noktada, isteği göndermeye hazırlanmanın ilk adımları için uygundur.

Örneğin, genellikle kotasını aşan bir istemciye hizmet vermek istemezsiniz. Bu gereksinimleri desteklemek için PreFlow segmentine güvenlik ve kota politikaları eklersiniz. Bu sayede, daha sonraki bir koşullu akışta değerlendirilemeyecek bir koşul için endişelenmenize gerek kalmaz. Bu akıştaki politikalar her zaman diğer herhangi bir işlem yapılmadan önce yürütülür.

Aşağıdaki örnekte SpikeArrest ve Quota politikaları, koşullu akışlara geçişleri işlemeden ö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

Bir PreFlow ve bir PostFlow arasında koşullu olarak yürütülen akışlarınız olabilir. Böylece birden fazla mantık dizisi yapılandırmanıza imkan tanır ancak proxy'nizin durumuna bağlı olarak yalnızca bir tane yürütmeye sahip olursunuz. PreFlow veya PostFlow'da tüm mantığı yürütebiliyorsanız ve koşul gerekmiyorsa (diğer bir deyişle, uç noktadan yalnızca bir yol desteklenir) koşullu akış isteğe bağlıdır.

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

Burada kota kısıtlamaları yalnızca isteğin /issue/** URI kalıbına sahip (/issue/ son eğik çizgiden sonra URI'de herhangi bir şey içeren) bir GET isteği olması durumunda 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ştirmenin kullanımına ilişkin örnekler için Kalıp eşleştirme bölümüne bakın.

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

PostFlow, uç noktanızın temel mantığından sonra ve uç nokta işlemesi tamamlanmadan önce işlem gerçekleştirmek için ideal bir yerdir. PostFlow, koşullu akışlardan ve PreFlow'dan sonra yürütülür.

PostFlow, bazı verileri günlüğe kaydetmek, bir etkinlik olduğuna dair bildirim göndermek, yanıt mesajı biçimini dönüştürmek ve benzeri işlemler için iyi bir yerdir.

Aşağıdaki örnekte, SetResponseHeaders adlı bir AttributionMessage politikası, Apigee Edge yanıtı istemciye geri göndermeden önce yanıt mesajının üst bilgilerini ayarlar.

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

İstemci bir PostClientFlow ile proxy'nizin yanıtını aldıktan sonra kodun yürütülmesini sağlama

PostClientFlow, aşağıdaki politikaları içerebilir:

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

Örneğin bir PostClientFlow, istemciye bir yanıt gönderildikten sonra yürütülecek son akış olur.

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

MessageLogging politikasının eklendiği 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 Dakika Video (4MV4D) serisindeki MessageLogging politikasını kullanarak nasıl PostClientFlow oluşturacağınızı 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 eklerken bunu proxy'nizin akışlarına politikalar ekleyerek yaparsınız. Akışların bir sırayla yürütülmesi (bu konuda açıklandığı gibi PreFlow, ardından Akış, ardından PostFlow) gibi bir akışın içeriği de sırayla yürütülür.

Aşağıdaki örnek akış yapılandırmasında üç politikaya referans veriliyor (kendi XML dosyalarının başka bir yerinde yapılandırılmış). Verify-API-Key tarafından referans verilen politika, Remove-API-Key tarafından referans verilen politikadan önce yürütülür; her iki politika da Quota ile temsil edilen politika izler.

<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 konsolu bu politika sırasını, her simgenin politikayı temsil ettiği bir simge satırı olarak sunar.

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

Hata ayıklama akışları

Apigee Edge Trace aracı, API proxy'nizdeki mantığın bir istek sonrasında nasıl çalıştığını gösteren bir grafik yol sunar. Araç, istek ve yanıt arasındaki işlemleri göstermektedir. PreFlow, koşullu akışlar ve PostFlow arasındaki ayrım özel olarak gösterilmez.

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

Akışlardaki hataları işleme

API proxy'sinde akışlar da dahil olmak üzere çeşitli yerlerden hata oluşturabilirsiniz.

Aşağıdaki örnek, bir hedef uç noktadaki bir PreFlow'dan alınan yanıt satırıdır. Başka bir deyişle, bir arka uç hedefinden yanıt alındığında hemen yürütülen koddur. Bu örnekte, hedeften gelen yanıt 200 (başarı) değilse bir hata bildiriliyor.

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

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