Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Tüm uygulama programlama modelleri, işleme akışını kontrol etmenin bir yolunu içerir. API proxy'lerinde bu işlem akışlarla yapılır. Akışlara mantık, koşul ifadeleri, hata işleme vb. ekleyebilirsiniz. Ne zaman ne 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ğrulama gibi proxy mantığı eklediğinizde, mantığı akış tarafından belirtilen sıradaki bir adım olarak eklersiniz. Mantığın yürütülüp yürütülmeyeceğini ve yürütülecekse ne zaman yürütüleceğini belirlemek için bir koşul tanımladığınızda koşulu bir akışa eklersiniz.
Aşağıdaki akış yapılandırması örneğinde, gelen istek yolu / ile bitiyorsa ve isteğin HTTP
fiili GET ise VerifyAPIKey politikasının
yürütüldüğü bir akış tanımlanı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, proxy'de başka bir yerde yapılandırılmış bir politikayı aşağıdaki gibi XML ile dahil etmek için kullanılır:
<?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 işleme yolu boyunca doğru sırada yürütülebilmesi için yapılandırırsınız.
Mantığı nereye ekleyeceğinize karar verirken önce mantığı bir proxy uç noktasına mı yoksa hedef uç noktasına mı ekleyeceğinizi seçersiniz. API proxy'si, kodunu proxy'nin istemcisiyle (proxy uç noktası) etkileşimde bulunan kod ve varsa proxy'nin arka uç hedefiyle (hedef uç noktası) etkileşimde bulunan isteğe bağlı kod arasında böler.
Her iki uç nokta da burada 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. Mantığın önce istemciden gelen istekte, ardından istemciye verilen yanıtta son olarak hareket etmesi için yer sağlar. | PreFlow, koşullu akışlar, PostFlow, PostClientFlow |
| TargetEndpoint | Arka uç kaynağına en yakın API proxy akışlarını içerir. Mantığın, bir arka uç kaynağı için istek hazırlamasına ve ardından bu kaynaktan gelen yanıtı işlemesine olanak tanır. | PreFlow, koşullu akışlar, PostFlow |
Akışı, neyin hangi sırayla gerçekleşmesi gerektiğini belirten XML ile yapılandırırsınız. Aşağıdaki resimde, akışların bir proxy uç noktası ve hedef uç noktası içinde sırayla nasıl sıralandığı gösterilmektedir:

Proxy uç noktası ve hedef uç noktası, 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 bir işlem gerçekleşmeden önce yürütülmesini sağlamanı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 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. Bu akış, koşulu doğru olarak değerlendirilen ilk akıştır. Bu, aşağıdaki işlemlerin her birinde bir koşullu akışın yürütülebileceği anlamına gelir:
|
| 3 | PostFlow |
Veri kaydetmek, isteği işlerken bir şeyler olduğunu bildiren bir bildirim göndermek vb. için iyi bir yerdir. Koşullu akışlardan ve PreFlow'dan sonra yürütülür. PostFlow bir proxy uç noktasındaysa ve bir hedef uç noktası varsa proxy uç noktası PostFlow, hedef uç noktası PreFlow'dan önce yürütülür. |
| 4 | PostClientFlow (yalnızca proxy akışı) | İstemciye yanıt döndürüldükten sonra iletileri kaydetme akışı. |
Ön akış ile kodu önce yürütme
PreFlow, belirli bir kodun başka bir işlem gerçekleşmeden önce yürütülmesini sağlamanız gerektiğinde kullanışlıdır.
Bir proxy uç noktasında, PreFlow, istemcinin kimliğini doğrulayan ve istemcilerden gelen trafiği sınırlayan kod için harika bir yerdir. Bir hedef uç noktasında, arka uç hedefine istek göndermeye hazırlanmaya başladığı yerde, PreFlow, isteği göndermeye hazırlanmanın ilk adımları için uygundur.
Örneğin, genellikle kotasını aşan bir müşteriye hizmet vermek istemezsiniz. Bu gereksinimleri desteklemek için PreFlow segmentine güvenlik ve kota politikaları yerleştirirsiniz. Bu sayede, daha sonraki bir koşullu akışta bir koşulun değerlendirilememesi konusunda endişelenmenize gerek kalmaz. Bu akıştaki politikalar, başka bir işleme gerçekleşmeden önce her zaman yürütülür.
Aşağıdaki örnekte, SpikeArrest ve Quota 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>Koşullu akışla kodu koşullu olarak yürütme
Bir PreFlow ile bir PostFlow arasında koşullu olarak yürütülen akışlar olabilir. Bu sayede, birden fazla mantık sırası yapılandırabilir ancak proxy'nizin durumuna göre yalnızca birini çalıştırabilirsiniz. Tüm mantığı PreFlow veya PostFlow'da yürütebiliyorsanız ve koşul gerekmiyorsa (diğer bir deyişle, uç nokta üzerinden yalnızca tek 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 dallandırır. Örneğin, yalnızca istekte bulunan uygulama bir mobil cihazda çalışırken XML'yi JSON'a dönüştürmek isteyebilirsiniz.
Burada kota kısıtlamaları yalnızca istek, GET URI kalıbına sahip bir /issue/** isteğiyse (son eğik çizgiden sonra URI'de herhangi bir şeyle birlikte /issue/) 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şkenli koşullar başlıklı makaleyi inceleyin.
Kalıp eşleştirmenin koşullarda kullanılmasıyla ilgili örnekler için Kalıp eşleştirme başlıklı makaleyi inceleyin.
PostFlow ile temel mantıktan sonra kod yürütme
PostFlow, uç noktanızın temel mantığından sonra ve uç nokta işleme tamamlanmadan önce işlemler gerçekleştirmek için idealdir. PostFlow, koşullu akışlardan ve PreFlow'dan sonra yürütülür.
PostFlow, bazı verileri kaydetmek, bir şey olduğunda bildirim göndermek, yanıt mesajı biçimini dönüştürmek vb. için iyi bir yerdir.
Aşağıdaki örnekte, SetResponseHeaders adlı bir AssignMessage politikası, Apigee Edge yanıtı istemciye geri göndermeden önce yanıt mesajının üstbilgilerini ayarlar.
<PostFlow>
<Response>
<Step>
<Name>SetResponseHeaders</Name>
</Step>
</Response>
</PostFlow>PostClientFlow ile istemci, proxy'nizin yanıtını aldıktan sonra kodun yürütülmesini sağlama
PostClientFlow aşağıdaki politikaları içerebilir:
- ExtensionCallout politikası
- FlowCallout politikası*
- MessageLogging politikası
- ServiceCallout politikası
* FlowCallout politikası yalnızca PostClientFlow'da bulunma kriterlerini karşılayan (ör. yalnızca uyumlu politikalar içeren) paylaşılan akışları çağırabilir.
Bir tane eklerseniz PostClientFlow, istemciye yanıt gönderildikten sonra yürütülecek son akış olur.
PostClientFlow, son günlük kaydı için uygundur. Ayrıca, yanıt mesajının başlangıç ve bitiş zaman damgalarını da kaydedebilirsiniz.
Aşağıda, MessageLogging politikası eklenmiş bir PostClientFlow örneği verilmiştir.
...
<PostFlow name="PostFlow">
<Request/>
<Response/>
</PostFlow>
<PostClientFlow>
<Request/>
<Response>
<Step>
<Name>Message-Logging-1</Name>
</Step>
</Response>
</PostClientFlow>
...Video: Four Minute Video For Developers (4MV4D) serisindeki MessageLogging politikasını kullanarak PostClientFlow oluşturmayı gösteren bu kısa videoyu izleyin.
Daha fazla bilgi için aşağıdaki sayfaları inceleyin:
- API proxy'si yapılandırma referansı
- Eğitim : Apigee Edge - Post Client Flow başlıklı topluluk makalesi
Akışlara mantık ekleme
Proxy'nize mantık eklemek için proxy'nizin akışlarına politikalar eklemeniz gerekir. Akışlar bir sırayla yürütüldüğü gibi (bu konuda açıklandığı üzere önce PreFlow, sonra Flow, ardından PostFlow), akışın içeriği de bir 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 veriyor. Verify-API-Key tarafından referans verilen politika, Remove-API-Key tarafından referans verilen politikadan önce yürütülür. Her ikisini de Quota ile gösterilen 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 dizisini her bir simgenin politikayı temsil ettiği bir simge satırı olarak gösterir.

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örmenin grafiksel bir yolunu sunar. Araç, istek ve yanıt arasındaki işleme sürecini gösterir. PreFlow, koşullu akışlar ve PostFlow arasındaki ayrımı net bir şekilde göstermez.
Proxy'leri izleme 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 hatalar bildirebilirsiniz.
Aşağıdaki örnek, bir hedef uç noktadaki PreFlow'dan alınan yanıt stanza'sıdır. Diğer bir deyişle, arka uç hedefinden yanıt alındıktan hemen sonra yürütülen koddur. Örnekte, hedeften gelen yanıt 200 (başarılı) değilse hata oluşturulur.
<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 başlıklı makaleyi inceleyin.