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

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

Her uygulama programlama modelinde işleme akışını kontrol etme yöntemi bulunur. API'de akışlarla yapılır. Akışlara mantık, koşul ifadeleri, hata işleme ve bu şekilde devam eder. 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. Proxy mantığını eklediğinizde, Örneğin bir API anahtarını doğrulamak için mantığı, akışla belirtilen sırada bir 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ış şemasıdır.

Aşağıdaki akış yapılandırması örneği, VerifyAPIKey politikasının gelen istek yolu / ve isteğin HTTP ile bitiyorsa if yürütülür fiil GET ise GETİR.

<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 yayınlanır aşağıdaki gibi XML ile proxy'de başka bir yerde yapılandırılmış bir politika ekleyin:

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

Akışları, mantığın süreç boyunca doğru sırada yürütülmesini sağlayacak şekilde yapılandırırsınız. gösterir.

Mantık nereye ekleyeceğinize karar verirken ilk olarak mantığı bir proxy uç noktasına veya hedef uç noktası. API proxy'si, kodunu proxy'nin proxy'nin arka uç hedefiyle etkileşime giren isteğe bağlı bir kod ve istemci (proxy uç noktası) (hedef uç nokta).

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ığa uygun hareket edilecek alanlar sağlar istemciden gelen istek üzerine çalışır, sonra da müşteriye verilen PreFlow, koşullu akışlar, PostFlow, PostClientFlow
TargetEndpoint Arka uç kaynağına en yakın API proxy akışlarını içerir. Mantık için yerler sağlar kullanarak bir arka uç kaynağı için istek hazırlayın ve ardından gelen yanıtı işleyin. 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ğıdakiler akışların bir proxy uç noktası ve hedef içinde sıralı olarak nasıl sıralandığını gösteren resim uç nokta:

HTTP hizmetine ulaşmak için Proxy Uç Noktasından Hedef Uç Noktasına geçen HTTP istemci isteği. Her istek ve yanıt panelinde ön akış, koşullu akışlar ve yayın 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, sıra şu şekildedir:

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

Belirli bir kodun her şeyden önce yürütüldüğünden emin olmanız gerektiğinde kullanışlıdır yaşanır.

PreFlow bir hedef uç noktasındaysa proxy uç noktasının PostFlow.

2 Koşullu Akış

Koşullu mantığın yeri. Ön Akıştan sonra ve PostFlow.

Segment başına yalnızca bir koşullu akış yürütülür (koşulu olan ilk akış) doğru olarak değerlendirilir. Bu, kalite yönetimi planının bir parçası olarak bir adet koşullu şunların her biri:
  • 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, işlem sırasında bir şey olduğunu belirten bir bildirim göndermek ve ve bu şekilde devam eder. Koşullu akışlardan ve Ön Akıştan sonra yürütülür.

PostFlow bir proxy uç noktasındaysa ve bir hedef uç nokta varsa proxy uç nokta PostFlow, hedef uç nokta 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 kaydedilmesine yönelik akış.

Kodun yürütülmesini sağlama bir PreFlow ile

PreFlow, belirli bir kodun her şeyden önce çalıştığından emin olmanız gerektiğinde faydalıdır. yaşanır.

PreFlow, proxy uç noktasında bir istemcinin kimliğini doğrulayan kod için ideal bir yerdir ve istemcilerden gelen trafiği sınırlar. Bir hedef uç noktasında, bir arka uç hedefi varsa PreFlow, isteği göndermeye hazırlanırken ilk adımlar için iyi bir yöntemdir.

Örneğin, kotasını aşan bir istemciye genellikle hizmet vermek istemezsiniz. Alıcı: bu gereksinimleri desteklediğinde, güvenlik ve kota politikalarını PreFlow segmentine eklersiniz. Bu şekilde ekip daha sonraki bir koşullu akışta değerlendirilemeyen bir koşul hakkında endişelenmenize gerek yoktur. İlgili içeriği oluşturmak için kullanılan 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ı, koşullu akışlar vardır.

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

Sahiplenme kod, koşullu akışla koşullu olarak yürütülür

PreFlow ve PostFlow arasında koşullu olarak yürütülen akışlara sahip olabilirsiniz. Bu da birden fazla mantık dizisi yapılandırma fırsatınız olur fakat buna dayalı olarak yalnızca bir tane yürütme durumunu kontrol edebilirsiniz. PreFlow veya PreFlow'daki tüm mantığı yürütebiliyorsanız koşullu akış isteğe bağlıdır PostFlow ve hiçbir koşul gerekmez (diğer bir deyişle, uç noktadan geçen yalnızca bir yol desteklenir).

Her akış, farklı durum değerlerini test eden bir koşul belirtir. Bu, etkili bir şekilde dalların yürütülmesini sağlamaktır. Örneğin, XML'yi yalnızca JSON'a dönüştürmek isteyebilirsiniz. İstekte bulunan uygulama bir mobil cihazda çalışıyorsa.

Burada kota sınırlamaları yalnızca istekGET /issue/** URI modeli (son yönlendirmeden sonra URI'daki herhangi bir şey ile) eğik çizgi).

<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ünü inceleyin.

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

Kod alınıyor PostFlow ile temel mantıktan sonra yürütme

PostFlow, uç noktanızın temel mantığından sonra ve izlemeden önce uç nokta işlemesi tamamlanır. PostFlow, koşullu akışlardan ve PreFlow'dan sonra yürütülür.

PostFlow; verilerinizi günlüğe kaydetmek, bir olayın gerçekleştiğine dair bildirim göndermek, yanıt mesajı biçimini değiştirebilir ve bu şekilde devam edebilirsiniz.

Aşağıdaki örnekte, SetResponseHeaders adlı bir{/117 politikası, yanıt mesajını istemciye geri göndermeden önce gönderin.

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

* FlowText politikası, yalnızca kendisi karşılayan paylaşılan akışları çağırabilir (ör. yalnızca uyumlu politikalar içeren), PostClientFlow'da bulunma kriterlerini karşılama

Bir tane eklerseniz PostClientFlow, yürütülecek son akış olur ve müşteriye yanıt gönderilir.

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: PostClientFlow'u nasıl oluşturacağınızı gösteren bu kısa videoya göz atın (Dört Dakikalık Video - Geliştiriciler İçin Dört Dakikalık Video (4MV4D) serisindeki MessageLogging politikası kullanılarak).

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. Tıpkı bir dizide yürütülür (bu konuda açıklandığı gibi PreFlow, ardından Akış ardından PostFlow), bir akışın içerikleri sırayla yürütülür.

Aşağıdaki örnek akış yapılandırması, üç politikaya referans verir ( kendi XML dosyaları için) oluşturabilirsiniz. Verify-API-Key tarafından referans verilen politika, Remove-API-Key tarafından referans verilen politika; her ikisinin de ardından, Quota.

<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 dizisini, her simgenin , politikayı temsil eder.

Apigee Edge konsolunda bu politika dizisi, her simgenin politikayı temsil ettiği bir dizi simge şeklinde sunulmaktadır. İstek yolunda gösterilen simgeler: 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 nasıl olduğunu gösteren grafik bir yol sunar , bir istekten sonra yürütülür. Araç, istek ile yanıt arasındaki işlemleri gösterir. Google PreFlow, koşullu akışlar ve PostFlow.

İzleme proxy'leri hakkında daha fazla bilgi için İzleme aracını kullanma konusuna bakın.

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 PreFlow'dan gelen yanıt kümesidir. Diğer bir arka uç hedefinden yanıt alındıktan hemen sonra çalıştırılan 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.