Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Przepływy to podstawowe elementy składowe zabezpieczeń proxy API. Dzięki przepływom możesz programować działanie interfejsu API, konfigurując kolejność, w jakiej reguły i kod są wykonywane przez interfejs API proxy.
Omówienie przepływów znajdziesz w artykule Kontrolowanie działania serwera proxy za pomocą przepływów.
Z tego tematu dowiesz się, jak tworzyć przepływy warunkowe i dodawać do nich logikę (zasady). Sztuka tworzenia warunków wymaga więcej szczegółów niż omawiane w tym temacie. Więcej informacji znajdziesz w artykułach Omówienie zmiennych przepływu i Warunki dotyczące zmiennych przepływu.
Dołączanie zasad do przepływów
Edge zawiera wiele wstępnie zdefiniowanych zasad, które umożliwiają wdrażanie zabezpieczeń, zarządzanie ruchem i modyfikowanie wiadomości. Pozwalają też dodawać własny kod, aby w pełni dostosować przetwarzanie wiadomości.
Na przykład:
- Dołącz do procesu wstępnego przetwarzania żądania ProxyEndpoint zasadę zabezpieczeń OAuth. Ponieważ żądanie PreFlow w ProxyEndpoint jest pierwszym przepływem w pipeline, możesz od razu odrzucić żądanie, jeśli narusza ono Twoje zasady zabezpieczeń.
- Aby przekonwertować odpowiedź z formatu JSON na XML, dodaj zasadę Konwersja z formatu JSON na XML do elementu response PostFlow w punkcie końcowym docelowym.
- Dołącz regułę JavaScript do warunkowego przepływu danych ProxyEndpoint, aby wykonać kod JavaScript służący do przetwarzania żądania.
Po utworzeniu przepływu warunkowego możesz go załączyć do zasady. Po wybraniu przepływu kliknij ikonę + Krok na diagramie żądania lub odpowiedzi, aby dodać do przepływu nową lub istniejącą regułę.
Dołączając zasadę do wybranego przepływu, 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 proxy zostanie wygenerowany ten 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 dociera żądanie GET o identyfikatorze URI o wzorze …/issue/** (/issue/ z dowolnym elementem w identyfikatorze URI po ostatnim ukośniku), w przypadku tego wywołania interfejsu API jest stosowana limitacja.
Informacje o przepływach warunkowych
Wszystkie zasady dołączone do PreFlow lub PostFlow są zawsze wykonywane. Jednak zasady w przepływie warunkowym są wykonywane tylko wtedy, gdy warunek przepływu ma wartość Prawda.
Podczas przetwarzania żądania i odpowiedzi w przypadku każdego segmentu jest wykonywany tylko jeden przepływ warunkowy – pierwszy, którego warunek jest spełniony. Oznacza to, że w ramach każdego z tych procesów możesz mieć jeden proces warunkowy:
- Potok żądań ProxyEndpoint
- Potok żądania docelowego punktu końcowego
- Potok odpowiedzi ProxyEndpoint
- Ścieżka odpowiedzi w przypadku punktu końcowego docelowego
Film: obejrzyj krótki film, aby dowiedzieć się więcej o przepływach warunkowych.
Na przykład definicja ProxyEndpoint poniżej przedstawia przepływ danych warunkowy, który jest wykonywany przez ProxyEndpoint w przypadku każdego żądania HTTP GET
do 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 przepływu to nazwane odwołania, które zawierają informacje o stanie powiązane z transakcją interfejsu API przetwarzaną 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, który wskazuje element, do którego deweloperzy mogą uzyskać dostęp, wywołując interfejs API. Jeśli na przykład backend usługi udostępnia raporty i prognozy pogody, interfejs API może zdefiniować 2 przepływy warunkowe, które odnoszą się do tych zasobów interfejsu API: /reports
i /forecasts
. Gdy wywołanie interfejsu API zawiera jeden z tych zasobów w adresie URL, warunek jest uznawany za spełniony i wykonuje się logika dołączona do przepływu warunkowego.
Deweloperzy aplikacji uzyskują dostęp do Twoich zasobów, wysyłając żądania do adresu URL w postaci:
http://myAPIs.myCo.com/weather/reports
lub
http://myAPIs.myCo.com/weather/forecasts
W proxy interfejsu API możesz zdefiniować przepływ warunkowy odpowiadający określonemu 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łujesz się do zmiennej przepływu proxy.pathsuffix
, która zawiera część sufiksową adresu URL używanego do uzyskiwania dostępu do serwera proxy interfejsu API. Następnie możesz dołączyć do przepływu warunkowego różne zasady dotyczące poszczególnych zasobów.
Dodawanie przepływu warunkowego
W tym krótkim przykładzie skonfigurujesz przepływ, który będzie wykonywany tylko wtedy, gdy komunikat żądania to HTTP GET.
Aby dodać przepływ warunkowy, wybierz kartę Tworzenie w kreatorze proxy dla interfejsu API.
Kliknij ikonę + w wybranym punkcie końcowym.
Formularz Nowy przepływ warunkowy pozwala nazwać przepływ i skonfigurować warunek. W tym przykładzie dodajesz prostą regułę, która sprawdza, czy HTTP w wiadomości żądania zawiera czasownik GET
(a nie PUT
, POST
itp.) w dowolnym identyfikatorze URI po ścieżce podstawowej.
(dowiedz się, jak tworzyć instrukcje warunkowe w zmiennych i warunkach przepływu).
Nowy przepływ danych o nazwie Flow-1 jest teraz widoczny w menu Navigatora.
Teraz zwróć uwagę na konfigurację XML punktu końcowego serwera proxy. W menu Nawigator wybierz Flow-1.
Zobaczysz tę 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 korzystaniu ze zmiennych znajdziesz w tych artykułach: