Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
API proxy'sinden veya başka bir paylaşılan akıştan paylaşılan bir akışa çağrı yapmak için FlowCallout politikasını kullanın.
Paylaşılan akışta, çalışma zamanında birden çok yerden yeniden kullanabileceğiniz bir adım sırası oluşturursunuz. Bu adımlar, API proxy'sinde olduğu gibi politikalar olarak uygulanır. FlowCallout politikası, API proxy'lerinden ve diğer paylaşılan akışlardan paylaşılan akışı çağırmanın bir yolunu sunar. Geleneksel bir programlama dilindeki işlev çağrısı gibi çalışır.
- Örneğin, API anahtarı doğrulama, OAuth jetonu doğrulama ve normal ifade koruması gibi güvenlik özelliklerine sahip bir paylaşılan akış oluşturduğunuzu düşünün. Bu paylaşılan akış, gelen istekleri kontrol etme yönteminizle ilgili kuralınızı temsil eder. FlowCallout politikalarını kullanarak bu paylaşılan akışı birden fazla API proxy'sinden çağırabilirsiniz.
- Paylaşılan bir akışın içinden FlowCallout politikası uygulayarak bir paylaşılan akıştan diğerini çağırabilirsiniz.
Örnekler
Paylaşılan akışta API anahtarını doğrulama
Bu örnekte, yaygın güvenlik görevlerini gerçekleştirmek için paylaşılan bir akış kullanılmaktadır. Burada, paylaşılan akış bir API anahtarını doğrular. API proxy'leri ve diğer paylaşılan akışlar, bu paylaşılan akışa çağrı yapmak için FlowCallout politikasını kullanabilir.
Aşağıdaki paylaşılan akış tanımı, paylaşılan akış bir API proxy'sindeki FlowCallout politikasından çağrıldığında yürütülen bir Verify-API-Key politikası içerir.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
<Step>
<Name>Verify-API-Key</Name>
</Step>
</SharedFlow>Önceki paylaşılan akış içindeki VerifyAPIKey politikası, anahtar değerini alır ve doğrular.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key">
<DisplayName>Verify API Key</DisplayName>
<APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>Bir API proxy'sinde kullanılan aşağıdaki FlowCallout politikası, API anahtarını doğrulamak için önceki paylaşılan akışı çağırır. verify-apikey-shared paylaşılan akış paketi (burada gösterilmemiştir),
paylaşılan akışı bir APIProxy paketi proxy'yi yapılandıracak şekilde yapılandırır.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout">
<DisplayName>Auth Flow Callout</DisplayName>
<SharedFlowBundle>verify-apikey-shared</SharedFlowBundle>
</FlowCallout>Paylaşılan akışa parametre iletme
Bu örnekte, FlowCallout politikasından paylaşılan bir akışa parametrelerin nasıl geçirileceği gösterilmektedir. Burada, FlowCallout politikası, yaygın dize işleme işlevlerini gerçekleştirmek için tasarlanmış bir paylaşılan akışı çağırır. Paylaşılan akış, girişini birleştiren, girişinin küçük harfli olmasını sağlayan veya her ikisini de yapan JavaScript'i içeriyor. FlowCallout politikası, dize girişini, çıkışını ve girişle ne yapılacağını belirten parametreleri tanımlar.
String-HandlerFlowCallout politikası, paylaşılan akışı çağırır. Bu sırada, paylaşılan akışın çıkışını depolayacak değişkeni, hangi paylaşılan akış işleminin ve hangi girişin kullanılacağını belirten parametreler iletilir (burada dize değişmez değeri kullanılır ancak akış değişkeni de kullanılabilir).Parameteröğeleri, çalışma zamanı oluşturmak için değişkenlerin adlarını ve değerlerini belirtir. Paylaşılan akış, bu değişkenleri kendi kodunda kullanmak üzere alabilir.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler"> <DisplayName>String Handler</DisplayName> <Parameters> <Parameter name="input">Gladys Kravitz</Parameter> <Parameter name="operations">concatenate tolowercase</Parameter> <Parameter name="outputVariable">string.handler.output</Parameter> </Parameters> <SharedFlowBundle>StringHandler</SharedFlowBundle> </FlowCallout>Aşağıdaki
defaultpaylaşılan akış, FlowCallout politikası tarafından çağrıldığında yürütülen birSharedStringFunctionsJavaScript politikası içerir.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>Paylaşılan akışta aşağıdaki
SharedStringFunctionsJavaScript politikası çalıştırılacak kodu içeren SharedStringFunctions.js JavaScript dosyasını belirtir.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="SharedStringFunctions"> <DisplayName>SharedStringFunctions</DisplayName> <Properties/> <ResourceURL>jsc://SharedStringFunctions.js</ResourceURL> </Javascript>
Aşağıdaki JavaScript, SharedStringFunctions.js,
SharedStringFunctionsJavaScript politikasından yürütülür. Bu komut dosyası, FlowCallout politikasıParameteröğelerinden oluşturulan değişkenlerden değerleri alır.// Input value from the calling API proxy. var handledString = context.getVariable("input"); // Variable to use for output from this script. var outputVariable = context.getVariable("outputVariable"); // A space-separated list of things to do to the input string. // Convert to lower case to handle unintentional capitals in configuration. var operation = context.getVariable("operations").toLowerCase(); // If "lowercase" was given as an operation, convert the input to lowercase. if (operation.includes("tolowercase")) { handledString = handledString.toLowerCase(); } // If "concatenate" was given as an operation, concatenate the input. if (operation.includes("concatenate")) { handledString = handledString.replace(/\s+/g, ''); } // Assign the resulting string to the output variable specified by // the calling API proxy. context.setVariable(outputVariable, handledString);
- Yürütme, JavaScript politikasından paylaşılan akışa, ardından da kaynak API proxy'sindeki FlowCallout politikasına geri döner.
Öğe referansı
Bu politikada yapılandırabileceğiniz öğeler ve özellikler aşağıda verilmiştir:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
<DisplayName>Custom label used in UI</DisplayName>
<SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle>
</FlowCallout><FlowCallout> özellikleri
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
| Özellik | Açıklama | Varsayılan | Varlık |
|---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
| Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
|---|---|
| Varlık | İsteğe bağlı |
| Tür | Dize |
<SharedFlowBundle> öğesi
Çağrılacak paylaşılan akışın adını belirtir. Bu öğenin değeri, hedef SharedFlowBundle öğesinin name özelliğinin değeriyle aynı olmalıdır.
<SharedFlowBundle/>
En basit örnekte, bu öğe için değer olarak çağrılan paylaşılan akışın adını verirsiniz. Yani bu öğenin değeri, paylaşılan akışın name özellik değeriyle aynı olmalıdır.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
| Varsayılan | Yok |
| Varlık (Presence) |
Zorunlu. |
| Tür | Yok |
Özellikler
Yok.
<Parameter> öğesi
Bu politika tarafından çağrılan paylaşılan akışa değişken olarak geçirilecek bir parametre ve değer (veya değer kaynağı) belirtir.
Bir parametre kullanarak, politika tarafından çağrılan paylaşılan akışa iletilmesi gereken bir değeri (veya değer içeren bir değişkeni) belirtebilirsiniz. Bu, kavramsal olarak bir işlev çağrısında parametre belirtmeye benzer. Bir işlev parametresinde olduğu gibi, FlowCallout parametresinin değeri de paylaşılan akış çağrısının bağlamına göre değişebilir.
FlowCallout parametreleri yalnızca paylaşılan akışın yürütülmesi sırasında görünür.
Söz dizimi
Bu öğeyi aşağıdaki söz dizimi biçimlerinden herhangi biriyle kullanabilirsiniz. Sabit değer kullandığınızda, belirttiğiniz değerin biçiminin, değeri kullanan koda bağlı olacağını unutmayın.
<!- A literal value in an attribute. --/> <Parameter name="parameter-name" value='parameter-value' /> <!- A reference to a variable in an attribute. --/> <Parameter name="parameter-name" ref='source-variable-name' /> <!- A literal value in the element content. --/> <Parameter name="parameter-name">parameter-value</Parameter> <!- An reference to an attribute in the element content. --/> <Parameter name="parameter-name">{source-variable-name}</Parameter>
Örnek
Bu String-Handler FlowCallout politikası, paylaşılan akışın çıktısının nerede depolanacağını ve hangi girişin kullanılacağını belirten parametreleri iletir. Parameter öğeleri
çalışma zamanı oluşturmak için değişkenlerin adlarını ve değerlerini belirtir. Paylaşılan akış, kendi kodunda kullanılmak üzere bu değişkenleri alabilir.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<FlowCallout async="false" continueOnError="false" enabled="true" name="String-Handler">
<DisplayName>String Handler</DisplayName>
<Parameters>
<Parameter name="input">Gladys Kravitz</Parameter>
<Parameter name="outputVariable">string.handler.output</Parameter>
</Parameters>
<SharedFlowBundle>StringHandler</SharedFlowBundle>
</FlowCallout>| Varsayılan | Yok |
| Varlık (Presence) |
Zorunlu. |
| Tür | Yok |
Özellikler
| Özellik | Açıklama | Varsayılan | Varlık | Tür |
|---|---|---|---|---|
| ad | Bu parametreyle oluşturulacak çalışma zamanı değişkeninin adı. | Yok. | Zorunlu. | Dize |
| ref |
Çalışma zamanında kullanılacak değeri içeren değişken. Kullanılacak değişmez bir değer belirtiyorsanız bu özelliği atlayın. |
Yok. | İsteğe bağlı. | Dize |
| value | Bu parametreyle oluşturulan çalışma zamanı değişkeninde kullanılacak değer. Değer kaynağı olması gereken bir değişkenin adını belirtiyorsanız bu özelliği atlayın. | Yok. | İsteğe bağlı. | Dize |
<Parameters> öğesi
Bu politika tarafından çağrılan paylaşılan akışa değişken olarak geçirilecek <Parameter> öğeleri kümesini belirtir.
Söz dizimi
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
| Varsayılan | Yok |
| Varlık (Presence) |
İsteğe bağlı. |
| Tür | Yok |
Özellikler
Yok.
Şemalar
Akış değişkenleri
Akış değişkenleri, HTTP üstbilgilerine, ileti içeriğine veya akış bağlamına göre politikaların ve akışların çalışma zamanında dinamik davranışını sağlar. Akış değişkenleri hakkında daha fazla bilgi için Değişken referansı başlıklı makaleyi inceleyin.
| Değişken | Açıklama |
|---|---|
|
|
Kapsam: Paylaşılan akış yürütme sırasında Paylaşılan akışın ad özelliği değeri. |
|
|
Kapsam: Akış kancasına eklenen paylaşılan akışın yürütülmesi sırasında. Akış kancasının adı. |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ve hata mesajları ile döndürülen hata değişkenleri açıklanmaktadır. Hataları ele almak için hata kuralları geliştiriyorsanız bu bilgiye sahip olmanız önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
| Hata kodu | HTTP durumu | Neden | Düzelt |
|---|---|---|---|
flow.SharedFlowNotFound |
500 | Paylaşılan akış mevcut değil veya paylaşılan akış mevcut ancak dağıtılmamış. | build |
Dağıtım hataları
Yok
İlgili konular
- Paylaşılan akışlar oluşturma: Yeniden kullanılabilir paylaşılan akışlar
- Paylaşılan akışları birden fazla proxy'de yürütme: Akış kancası kullanarak paylaşılan akış ekleme