Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
Przepływy to podstawowe elementy składowe serwerów proxy interfejsów API. Przepływy umożliwiają programowanie działania interfejsu API, umożliwiając skonfigurowanie sekwencji, w której zasady i kod są wykonywane przez serwer proxy interfejsu API.
Ogólne omówienie przepływów znajdziesz w artykule o kontrolowaniu działania serwera proxy za pomocą przepływów.
Z tego artykułu dowiesz się, jak tworzyć przepływy warunkowe i dodawać logikę (zasady) do przepływów na wysokim poziomie. Sztuka tworzenia warunków obejmuje więcej szczegółów niż omówiono w tym temacie. Więcej informacji znajdziesz w artykułach Omówienie zmiennych przepływu i Warunki ze zmiennymi przepływu.
Dołączanie zasad do przepływów
Edge ma wiele różnych typów wstępnie zdefiniowanych zasad, które pozwalają wdrażać zabezpieczenia, zarządzać ruchem i manipulować wiadomościami. Zasady umożliwiają też dodanie własnego kodu niestandardowego w celu pełnego dostosowania przetwarzania wiadomości.
Na przykład:
- Dołącz zasadę zabezpieczeń OAuth do przebiegu wstępnego żądania punktu końcowego ProxyEndpoint. Żądanie PreFlow punktu ProxyEndpoint jest pierwszym przepływem w potoku, dlatego możesz natychmiast odrzucić żądanie, jeśli narusza ono Twoje zasady zabezpieczeń.
- Dołącz zasadę konwersji JSON na XML do odpowiedzi PostFlow punktu końcowego docelowego, aby przekonwertować odpowiedź z JSON na XML.
- Dołącz zasadę JavaScript do JavaScript , aby wykonywać kod JavaScript w celu przetworzenia żądania
Po utworzeniu przepływu warunkowego będzie on dostępny w załączniku do zasad. Po wybraniu procesu kliknij ikonę + Krok na diagramie żądania lub odpowiedzi, aby dodać do procesu nową lub istniejącą zasadę.
Dołączając zasadę do wybranego procesu, konfigurujesz serwer proxy interfejsu API tak, aby wymuszał zasadę limitu tylko w przypadku żądań wysyłanych do tej kombinacji identyfikatora URI przepływu i czasownika. Jeśli na przykład dołączysz zasadę do procesu learn w żądaniu, w widoku kodu w edytorze serwera proxy zostanie wygenerowany następujący kod XML:
<ProxyEndpoint name="default"> ... <Flow name="issue"> <Description/> <Request> <Step> <Name>Quota-2</Name> </Step> </Request> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition> </Flow> ... </ProxyEndpoint>
W tej konfiguracji, jeśli do serwera proxy interfejsu API przychodzi żądanie GET z wzorcem URI o wartości .../issue/** (/issue/ z dowolnym elementem identyfikatora URI po ostatnim ukośniku), dla tego wywołania interfejsu API jest egzekwowany limit.
Informacje o przepływach warunkowych
Wszelkie zasady powiązane z przepływem (PreFlow lub PostFlow) są zawsze realizowane. Jednak zasady w przepływie warunkowym są wykonywane tylko wtedy, gdy warunek przepływu przyjmie wartość prawda.
Podczas przetwarzania żądania i odpowiedzi wykonywany jest tylko 1 proces warunkowy na segment – pierwszy przepływ, którego warunek przyjmuje wartość prawda. Oznacza to, że w ramach każdego z tych działań możesz wykonać 1 proces warunkowy:
- Potok żądań ProxyEndpoint
- Potok żądań elementu TargetEndpoint
- Potok odpowiedzi ProxyEndpoint
- Potok odpowiedzi elementu TargetEndpoint
Film: obejrzyj krótki film, aby dowiedzieć się więcej o procesach warunkowych.
Na przykład ta definicja punktu ProxyEndpoint przedstawia przepływ warunkowy wykonywany przez ProxyEndpoint przy każdym żądaniu HTTP GET
wysyłanym do serwera proxy interfejsu API:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>request.verb="GET"</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
Zwróć uwagę, że warunek odwołuje się do zmiennej przepływu request.verb. Zmienna procesu nosi nazwę referencji, która zawiera informacje o stanie powiązane z transakcją interfejsu API przetworzoną przez Edge. Edge definiuje wiele zmiennych stanu, do których możesz się odwoływać.
Usługi REST to zbiory zasobów interfejsu API. Zasób interfejsu API to fragment ścieżki identyfikatora URI identyfikujący encję, do której deweloperzy mogą uzyskać dostęp przez wywołanie interfejsu API. Jeśli na przykład backend usługi udostępnia raporty pogodowe i prognozy pogody, interfejs API może zdefiniować 2 procesy warunkowe mapowane na te zasoby interfejsu API: /reports
i /forecasts
. Jeśli wywołanie interfejsu API zawiera w adresie URL jeden z tych zasobów, warunek przyjmuje wartość prawda i wykonywana jest logika powiązana z przepływem warunkowym.
Następnie deweloperzy aplikacji uzyskują dostęp do Twoich zasobów, wysyłając żądania do adresu URL w takiej postaci:
http://myAPIs.myCo.com/weather/reports
lub
http://myAPIs.myCo.com/weather/forecasts
W serwerze proxy interfejsu API możesz zdefiniować przepływ warunkowy odpowiadający konkretnemu zasobowi:
<ProxyEndpoint name="default"> <PreFlow> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition> <Request/> <Response/> </Flow> <Flow name="Flow-2"> <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition> <Request/> <Response/> </Flow> </Flows> <PostFlow> <Request/> <Response/> </PostFlow> ... </ProxyEndpoint>
W tym przykładzie odwołasz się do zmiennej przepływu proxy.pathsuffix
, która zawiera przyrostek adresu URL używanego do uzyskiwania dostępu do serwera proxy interfejsu API. Możesz następnie dołączyć różne zasady do procesu warunkowego dla każdego zasobu.
Dodawanie przepływu warunkowego
W tym krótkim przykładzie konfigurujesz przepływ, który jest wykonywany tylko wtedy, gdy komunikatem żądania jest HTTP GET.
Aby dodać proces warunkowy, wybierz kartę Develop (Programowanie) w kreatorze proxy interfejsów API.
Kliknij ikonę + w wybranym punkcie końcowym.
Formularz Nowy przepływ warunkowy pozwala nazwać przepływ i skonfigurować warunek. W poniższym przykładzie dodasz prosty warunek, który ocenia kod HTTP żądania z żądaniem czasownika GET
(zamiast PUT
, POST
itd.) w dowolnym identyfikatorze URI po ścieżce podstawowej.
(Informacje o tworzeniu instrukcji warunkowych znajdziesz w artykule Zmienne i warunki przepływu).
Nowa procedura o nazwie Flow-1 pojawi się teraz w menu Nawigatora.
Teraz spójrz na konfigurację XML punktu ProxyEndpoint. Wybierz Flow-1 w menu Flow-1.
Zobaczysz taką konfigurację.
<PreFlow name="PreFlow"> <Request/> <Response/> </PreFlow> <Flows> <Flow name="Flow-1"> <Request/> <Response/> <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition> </Flow> </Flows> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow>
Dalsze kroki
Więcej informacji o tworzeniu warunków i używaniu zmiennych znajdziesz w tych tematach: