Akış Çağrısı politikası

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.

  1. String-Handler FlowCallout 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>
  2. Aşağıdaki default paylaşılan akış, FlowCallout politikası tarafından çağrıldığında yürütülen bir SharedStringFunctions JavaScript politikası içerir.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SharedFlow name="default">
      <Step>
        <Name>SharedStringFunctions</Name>
      </Step>
    </SharedFlow>
  3. Paylaşılan akışta aşağıdaki SharedStringFunctions JavaScript 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>
  4. Aşağıdaki JavaScript, SharedStringFunctions.js, SharedStringFunctions JavaScript 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);
  5. 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ı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğ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 name özelliğinin değeri: kullanılır.

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

apigee.edge.sharedflow.name

Kapsam: Paylaşılan akış yürütme sırasında
Tür: Dize
İzin: Okuma

Paylaşılan akışın ad özelliği değeri.

apigee.edge.flowhook.name

Kapsam: Akış kancasına eklenen paylaşılan akışın yürütülmesi sırasında.
Tür: Dize
İzin: Okuma

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ış.

Dağıtım hataları

Yok

İlgili konular