Wyświetlasz dokumentację Apigee Edge.
Przejdź do
dokumentacji Apigee X. info
Edge umożliwia wywoływanie jednego proxy interfejsu API z innego proxy interfejsu API. Ta funkcja jest przydatna zwłaszcza wtedy, gdy masz proxy interfejsu API, które zawiera kod wielokrotnego użytku, z którego mogą korzystać inne proxy interfejsu API.
Antywzorzec
Wywoływanie jednego proxy interfejsu API z innego za pomocą HTTPTargetConnection w docelowym punkcie końcowym lub niestandardowego kodu JavaScript powoduje dodatkowy przeskok sieciowy.
Wywoływanie proxy 2 z proxy 1 za pomocą HTTPTargetConnection
Poniższy przykładowy kod wywołuje proxy 2 z proxy 1 za pomocą HTTPTargetConnection:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
Wywoływanie proxy 2 z proxy 1 za pomocą kodu JavaScript
Następny przykładowy kod wywołuje proxy 2 z proxy 1 za pomocą JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
Przepływ kodu
Aby zrozumieć, dlaczego ma to wrodzoną wadę, musimy zrozumieć ścieżkę, którą pokonuje żądanie, co ilustruje poniższy diagram:
Jak widać na diagramie, żądanie przechodzi przez wiele rozproszonych komponentów, w tym router i procesor komunikatów.
W powyższych próbkach kodu wywoływanie proxy 2 z proxy 1 oznacza, że żądanie musi być kierowane w czasie wykonywania przez tradycyjną ścieżkę (czyli router > MP). Byłoby to podobne do wywoływania interfejsu API z klienta, co powoduje wiele przeskoków sieciowych, które zwiększają opóźnienie. Te przeskoki są niepotrzebne, ponieważ żądanie proxy 1 „dotarło” już do MP.
Wpływ
Wywoływanie jednego proxy interfejsu API z innego proxy interfejsu API powoduje niepotrzebne przeskoki sieciowe, czyli żądanie musi zostać przekazane z jednego procesora komunikatów do innego procesora komunikatów.
Sprawdzona metoda
- Do wywoływania jednego proxy interfejsu API z innego używaj funkcji łączenia proxy. Łączenie proxy jest bardziej
wydajne, ponieważ używa lokalnego połączenia do odwoływania się do docelowego punktu końcowego (innego proxy interfejsu API).
Przykładowy kod pokazuje łączenie proxy za pomocą LocalTargetConnection w definicji punktu końcowego definicji:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Wywoływane proxy interfejsu API jest wykonywane w tym samym procesorze komunikatów, dzięki czemu unika przeskoku sieciowego, jak pokazano na rysunku poniżej:
Rysunek 2. Przepływ kodu z łączeniem proxy