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

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

Bir API proxy'sinden veya başka bir paylaşılan akıştan paylaşılan bir akışı çağırmak için FlowCall politikasını kullanın.

Paylaşılan akışta, çalışma zamanında birden fazla yerden yeniden kullanabileceğiniz bir adım dizisi oluşturursunuz. Bu adımlar, bir API proxy'sinde olduğu gibi politikalar olarak uygulanır. FlowCall politikası, paylaşılan akışı API proxy'lerinden ve diğer paylaşılan akışlardan çağırmanız için bir yöntem sunar. Geleneksel bir programlama dilindeki işlev çağrısı gibi çalışır.

  • API anahtarı doğrulaması, OAuth jetonu doğrulaması ve normal ifade koruması gibi güvenlik özelliklerinin bulunduğu paylaşılan bir akış oluşturduğunuzu varsayalım. Bu paylaşılan akış, gelen istekleri kontrol etmek için kullandığınız kuralı temsil eder. FlowCall politikalarını kullanarak bu paylaşılan akışı birden fazla API proxy'sinden çağırabilirsiniz.
  • Paylaşılan bir akışta bir FlowCall politikası uygulayarak paylaşılan bir akışı başka bir akıştan çağırabilirsiniz.

Sana Özel

Paylaşılan akışta API anahtarını doğrulayın

Bu örnekte, paylaşılan bir akış güvenlikle ilgili yaygın görevleri gerçekleştirmek için kullanılmıştı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 FlowCall politikasını kullanabilir.

Aşağıdaki paylaşılan akış tanımında, paylaşılan akış API proxy'sindeki bir FlowCall politikasından çağrıldığında yürütülen bir Verify-API-Key politikası bulunur.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<SharedFlow name="default">
    <Step>
        <Name>Verify-API-Key</Name>
    </Step>
</SharedFlow>

Önceki paylaşılan akıştaki 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>

API proxy'sinde kullanılan aşağıdaki FlowCall 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 paketinin proxy yapılandırdığı ş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 bir akışa parametre iletme

Bu örnekte, parametrelerin bir FlowCall politikasından paylaşılan bir akışa nasıl geçirileceği gösterilmektedir. Burada, bir FlowCall politikası, yaygın dize işleme işlevlerini gerçekleştirmek için tasarlanmış bir paylaşılan akışa çağrıda bulunur. Paylaşılan akış, girişini birleştiren JavaScript'i, girişini küçük harfli yapan veya her ikisini de içerir. FlowDescription politikası, dize girişini, çıkışını ve girişle ne yapılacağını belirten parametreleri tanımlar.

  1. String-Handler FlowHeader politikası, paylaşılan akışı çağırarak paylaşılan akışın çıkışını depolayacak değişkeni, hangi paylaşılan akış işleminin kullanılacağını ve hangi girdinin kullanılacağını belirten parametreleri iletir (burada sabit bir dize ancak akış değişkeni de olabilir). Parameter öğeleri, çalışma zamanı oluşturulacak 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ışı, bir FlowCall politikasından paylaşılan akış ç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ı, yürütülecek 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 olan SharedStringFunctions.js, SharedStringFunctions JavaScript politikasından yürütülür. Bu komut dosyası, FlowAçıklama politikası Parameter öğelerinden oluşturulan değişkenlerden değer 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 işlemi JavaScript politikasından paylaşılan akışa, ardından kaynak API proxy'sindeki FlowCall 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>

<Flow callout> ö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çerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

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

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<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 öğenin değeri olarak çağrılan paylaşılan akışın adını veriyorsunuz. 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
Bulunma

Zorunlu.

Tür Yok

Özellikler

Yok.

<Parametre> öğesi

Bu politika tarafından çağrılan paylaşılan akışa değişken olarak aktarılacak bir parametre ve değer (veya değer kaynağı) belirtir.

Bir parametre kullanarak politika tarafından çağrılan paylaşılan akışa geçirilmesi gereken bir değer (veya değer içeren bir değişken) belirtebilirsiniz. Bu, kavram olarak işlev çağrısında parametre belirtmeye benzer. İşlev parametresinde olduğu gibi, FlowCall parametresinin değeri, paylaşılan akış çağrısının bağlamına göre değişiklik gösterebilir.

FlowDescription 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çimlerinin herhangi biriyle kullanabilirsiniz. Değişmez değer kullandığınız durumlarda, 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

Paylaşılan akışın çıkışının nerede depolanacağını ve hangi girişin kullanılacağını belirten bu String-Handler FlowHeader politikası iletme parametreleri. Parameter öğeleri, çalışma zamanı oluşturulacak 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="outputVariable">string.handler.output</Parameter>
  </Parameters>
  <SharedFlowBundle>StringHandler</SharedFlowBundle>
</FlowCallout>
Varsayılan Yok
Bulunma

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
referans

Değişken, çalışma zamanında kullanılacak değeri içerir. Kullanılacak sabit 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 politikanın çağırdığı paylaşılan akışa değişken olarak aktarılacak <Parameter> öğeleri grubunu belirtir.

Söz dizimi

<Parameters>
  <Parameter name="parameter-name" value='parameter-value' />
</Parameters>
Varsayılan Yok
Bulunma

İsteğe bağlı.

Tür Yok

Özellikler

Yok.

Şemalar

Akış değişkenleri

Akış değişkenleri; HTTP üstbilgileri, mesaj içeriği veya akış bağlamına göre çalışma zamanında politikaların ve akışların dinamik davranışını etkinleştirir. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı bölümüne bakın.

Değişken Açıklama

apigee.edge.sharedflow.name

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

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

apigee.edge.flowhook.name

Kapsam: Akış kancasına bağlı 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