Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Użyj zasady FlowCallout, aby wywołać udostępniany przepływ z serwera proxy interfejsu API lub innego. wspólne przepływy pracy.
W ramach wspólnego procesu tworzysz sekwencję kroków do wykorzystania w czasie wykonywania z wielu miejsc. Te kroki są implementowane jako zasady, tak jak w serwerze proxy interfejsu API. Zasada FlowCallout umożliwia wywoływanie współdzielonego przepływu z serwerów proxy interfejsu API i innych współdzielonych przepływów. Działa jak wywołanie funkcji w tradycyjnym języku programowania.
- Wyobraź sobie na przykład, że masz wspólny proces z funkcjami zabezpieczeń, takimi jak weryfikację klucza interfejsu API, weryfikację tokena OAuth i ochronę za pomocą wyrażeń regularnych. Ten udostępniony proces to Twoja konwencja sprawdzania żądań przychodzących. Dzięki zasadom FlowCallout możesz wywoływać ten wspólny przepływ z wielu serwerów proxy interfejsu API.
- Możesz wywołać jeden udostępniony proces z innego, implementując zasadę Flowobjaśnienia z poziomu udostępnionego procesu. przepływu danych.
Przykłady
Zweryfikuj klucz interfejsu API w udostępnionym przepływie
W tym przykładzie wspólny przepływ jest używany do wykonywania typowych zadań związanych z bezpieczeństwem. Tutaj Wspólny przepływ weryfikuje klucz interfejsu API. Serwery proxy interfejsu API i inne współdzielone przepływy mogą używać rozszerzenia FlowCallout zgodnie z zasadami dotyczącymi korzystania ze wspólnego procesu.
Poniższa definicja przepływu współdzielonego zawiera zasadę Verify-API-Key
, która jest wykonywana
gdy udostępniany przepływ jest wywoływany z zasady FlowCallout na serwerze proxy API.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>Verify-API-Key</Name> </Step> </SharedFlow>
Zasada VerifyAPIKey
w ramach poprzedniego udostępnionego przepływu pobiera wartość klucza i
zostanie potwierdzona.
<VerifyAPIKey async="false" continueOnError="false" enabled="true" name="Verify-API-Key"> <DisplayName>Verify API Key</DisplayName> <APIKey ref="request.queryparam.apikey"/> </VerifyAPIKey>
Poniższa zasada FlowCallout, używana na serwerze proxy interfejsu API, wywołuje poprzedni udostępniony przepływ do
zweryfikować klucz interfejsu API. Pakiet przepływu współdzielonego (verify-apikey-shared
) (niewidoczny tutaj)
konfiguruje udostępniony przepływ tak, jak pakiet APIProxy konfiguruje serwer proxy.
<FlowCallout async="false" continueOnError="false" enabled="true" name="Auth-Flow-Callout"> <DisplayName>Auth Flow Callout</DisplayName> <SharedFlowBundle>verify-apikey-shared</SharedFlowBundle> </FlowCallout>
Przekazywanie parametrów do udostępnianego przepływu
Ten przykład pokazuje, jak przekazywać parametry z zasady FlowCallout do wspólne przepływy pracy. Tutaj zasada Flowobjaśnienia wywołuje wspólny proces mający na celu wykonanie wspólnych funkcje obsługi ciągów znaków. Wspólny przepływ obejmuje kod JavaScript, który łączy dane wejściowe, będzie zapisywać dane wejściowe małymi literami lub w obu tych miejscach. Zasada FlowCallout definiuje parametry określające dane wejściowe i wyjściowe oraz co z nimi zrobić.
Zasada Flowobjaśnienia
String-Handler
wywołuje wspólny proces, przekazywanie parametrów określających zmienną do przechowywania danych wyjściowych wspólnego przepływu, a także oraz jakich danych wejściowych użyć (w tym przypadku może to być literał łańcuchowy, zmienną przepływu). ElementyParameter
określają nazwy i wartości zmiennych aby utworzyć środowisko wykonawcze. Wspólny przepływ może pobierać te zmienne do własnego kodu.<?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>
Poniższy udostępniony przepływ
default
zawiera zasadę JavaScriptSharedStringFunctions
, która jest wykonywana, gdy wspólny przepływ jest wywoływany z zasady FlowCallout.<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SharedFlow name="default"> <Step> <Name>SharedStringFunctions</Name> </Step> </SharedFlow>
W ramach procesu współdzielonego następujące zasady JavaScriptu:
SharedStringFunctions
określa plik JavaScript SharedStringFunctions.js z kodem do wykonania.<?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>
Poniższy kod JavaScript (SharedStringFunctions.js) jest wykonywany z
SharedStringFunctions
zasada JavaScript. Ten skrypt pobiera wartości z zmienne utworzone na podstawie elementów zasady FlowCalloutParameter
.// 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);
- Wykonanie następuje z poziomu zasady JavaScriptu do wspólnego przepływu, a następnie do Zasada FlowCallout w źródłowym serwerze proxy interfejsu API.
Odwołanie do elementu
Oto elementy i atrybuty, które możesz skonfigurować w tej zasadzie:
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1"> <DisplayName>Custom label used in UI</DisplayName> <SharedFlowBundle>thereferencedsharedflowbundle</SharedFlowBundle> </FlowCallout>
<FlowCallout> atrybuty
<FlowCallout async="false" continueOnError="false" enabled="true" name="Flow-Callout-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślny | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name
do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
<SharedFlowBundle> element
Określa nazwę udostępnianego przepływu, który ma zostać wywołany. Wartość tego elementu powinna być taka sama jak wartości atrybutu nazwy docelowego elementu SharedFlowBundle.
<SharedFlowBundle/>
W najprostszym przykładzie nadajesz nazwę udostępnianego przepływu, która jest wywoływana jako wartość dla tego procesu.
. Oznacza to, że wartość tego elementu musi być taka sama jak wartość name
przepływu wspólnego.
.
<SharedFlowBundle>Shared-Flow-Name</SharedFlowBundle>
Domyślnie | Nie dotyczy |
Obecność |
Wymagane. |
Typ | Nie dotyczy |
Atrybuty
Brak.
<Parameter> element
Określa parametr i wartość (lub źródło wartości), które mają być przekazywane jako zmienna do udostępnianego przepływu wywoływanego przez tę funkcję. .
Za pomocą parametru możesz określić wartość (lub zmienną zawierającą wartość), która powinna być przekazywane do udostępnianego przepływu wywoływanego przez zasadę. Przypomina to koncepcyjnie określenie w wywołaniu funkcji. Tak jak w przypadku parametru funkcji, wartość parametru FlowCallout może być różnią się w zależności od kontekstu wspólnego wywołania procesu.
Parametry FlowCallout są widoczne tylko podczas wykonywania udostępnionego przepływu.
Składnia
Tego elementu możesz używać w dowolnej z podanych niżej form składni. Pamiętaj, że użyj wartości literału, format podanej wartości będzie zależny od kodu pochłaniają tę wartość.
<!- 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>
Przykład
Ta zasada Flowobjaśnienia (String-Handler
) przekazuje parametry, które określają, gdzie
do przechowywania danych wyjściowych wspólnego przepływu
i danych wejściowych, które mają być używane. Elementy Parameter
określać nazwy i wartości zmiennych służące do utworzenia środowiska wykonawczego. Wspólny proces umożliwia pobieranie
do użycia w osobnym kodzie.
<?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>
Domyślnie | Nie dotyczy |
Obecność |
Wymagane. |
Typ | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślny | Obecność | Typ |
---|---|---|---|---|
nazwa | Nazwa zmiennej środowiska wykonawczego, która ma zostać utworzona za pomocą tego parametru. | Brak. | Wymagane. | Ciąg znaków |
odsyłacz |
Zmienna, która zawiera wartość do wykorzystania w czasie działania. Pomiń ten atrybut, jeśli określający do użycia wartość literału. |
Brak. | Opcjonalnie: | Ciąg znaków |
wartość | Wartość używana w zmiennej środowiska wykonawczego utworzonej za pomocą tego parametru. Pomiń ten atrybut, jeśli określasz nazwę zmiennej, która powinna być źródłem wartości. | Brak. | Opcjonalnie: | Ciąg znaków |
<Parameters> element
Określa zestaw elementów <Parameter>, które mają być przekazywane jako zmienne do udostępnianego przepływu wywoływanego przez ten parametr. .
Składnia
<Parameters> <Parameter name="parameter-name" value='parameter-value' /> </Parameters>
Domyślnie | Nie dotyczy |
Obecność |
Opcjonalnie: |
Typ | Nie dotyczy |
Atrybuty
Brak.
Schematy
Zmienne przepływu
Zmienne przepływu umożliwiają dynamiczne zachowanie zasad i przepływów w czasie działania na podstawie protokołu HTTP nagłówków, treści wiadomości czy kontekstu przepływu. Więcej informacji o zmiennych Flow: Informacje o zmiennych.
Zmienna | Opis |
---|---|
|
Zakres: podczas wykonywania udostępnionego przepływu Wartość atrybutu nazwa przepływu współdzielonego. |
|
Zakres: podczas wykonywania udostępnionego przepływu powiązanego z przepływem.
zaczepienie. Nazwa punktu zaczepienia przepływu. |
Informacje o błędzie
W tej sekcji opisujemy kody błędów i komunikaty o błędach, które są zwracane, a także zmienne błędów ustawiane przez Edge, gdy ta zasada aktywuje błąd. Te informacje są ważne, jeśli opracowujesz reguły dotyczące błędów do obsługi błędów. Więcej informacji znajdziesz w sekcjach Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
flow.SharedFlowNotFound |
500 | Przepływ udostępniony nie istnieje albo przepływ udostępniony istnieje, ale nie został wdrożony. | build |
Błędy wdrażania
Nie dotyczy
Powiązane artykuły
- Tworzenie współdzielonych przepływów: jednokrotnego użytku przepływy wspólne
- Wykonywanie współdzielonych przepływów między wieloma serwerami proxy: dołączanie udostępnianego przepływu za pomocą haczyka przepływu