Dodawanie Node.js do istniejącego serwera proxy interfejsu API

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

Wprowadzenie

Z tego tematu dowiesz się, jak dodać aplikację Node.js do istniejącego serwera proxy w lokalnym systemie plików i jak wdrożyć serwer proxy do Apigee Edge.

Przygotowywanie środowiska programistycznego

W tym temacie zakładamy, że masz już skonfigurowane w systemie lokalnym środowisko programistyczne serwera proxy i chcesz zintegrować z nim aplikację Node.js.

Podstawowa struktura aplikacji proxy zawierającej aplikację Node.js jest zgodna ze wzorcem pokazanym na rysunku poniżej. Zawiera folder podstawowy /apiproxy oraz foldery podrzędne resources, targets i proxies. Folder apiproxy/resources/node to miejsce, w którym muszą być umieszczone pliki Node.js. Pozostałe foldery zawierają pliki XML, które definiują serwer proxy i końcowe punkty dostępu, przepływ danych przez serwer proxy, przepływy warunkowe itp. Pełniejszy opis struktury interfejsu API proxy znajdziesz w artykule Przewodnik po konfiguracji interfejsu API proxy.

Pamiętaj, że każdy kod Node.js, który jest częścią serwera proxy, musi znajdować się w folderze /apiproxy/resources/node. W tym miejscu Edge spodziewa się go znaleźć po wdrożeniu.

Określ docel Node.js za pomocą parametru ScriptTarget

Kluczem do zintegrowania Node.js z serwerem proxy jest określenie elementu <ScriptTarget> w pliku XML docelowego punktu końcowego. W strukturze plików serwera proxy plik XML znajduje się w apiproxy/targets. Domyślna nazwa pliku to default.xml.

Dla kontekstu weź pod uwagę, że docelowy punkt końcowy zwykle wskazuje jakąś usługę backendu. W tym przypadku wywołujemy mockową usługę docelową Apigee. Definicja docelowego punktu końcowego wygląda tak:

<TargetEndpoint name="default">
    <Description/>
    <Flows/>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
    <HTTPTargetConnection>
        <URL>http://mocktarget.apigee.net/</URL>
    </HTTPTargetConnection>
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
</TargetEndpoint>

Element <HTTPTargetConnection> określa adres URL usługi backendu, czyli usługi docelowej mockowanej przez Apigee.

W przypadku Node.js aplikacja Node.js sama jest docelowym elementem. Możesz to określić za pomocą tagu <ScriptTarget> w pliku apiproxy/targets/default.xml.

Zamiast elementu <HTTPTargetConnection> do określania adresu URL usługi backendowej, odwołanie do aplikacji Node.js jest umieszczane bezpośrednio w elemencie <ScriptTarget>, np. w ten sposób:

<TargetEndpoint name="default">
    <ScriptTarget>
         <ResourceURL>node://server.js</ResourceURL>
    </ScriptTarget>
    <PreFlow name="PreFlow">
        <Request/>
        <Response/>
    </PreFlow>
</TargetEndpoint>

Parametr <ResourceURL> musi zawsze zaczynać się od node://, a następnie musi być poprzedzony nazwą głównego skryptu Node.js. Jak już wspomnieliśmy, zasoby Node.js muszą znajdować się w /apiproxy/resources/node w zakresie serwera proxy interfejsu API.

Dodatkowe parametry możesz ustawić w polu „ScriptTarget”. Szczegółowe informacje znajdziesz w artykule Konfiguracja zaawansowanego typu docelowego skryptu.

W tym przykładzie przedstawiamy kod źródłowy głównego pliku Node.js o nazwie server.js. Jest to podstawowy serwer HTTP, który zwraca „Hello World!”, gdy otrzyma żądanie:

var http = require('http');
console.log('node.js application starting...');
var svr = http.createServer(function(req, resp) {
    resp.end('Hello, Node!');
});

svr.listen(process.env.PORT || 9000, function() {
    console.log('Node HTTP server is listening');
});

Podsumowując, przy założeniu, że główna aplikacja Node.js jest zaimplementowana w pliku o nazwie server.js, a konfiguracje punktów końcowych noszą nazwę default.xml, serwer proxy interfejsu API zawierający skrypt Node.js ma taką strukturę:

/apiproxy/proxyName.xml
/apiproxy/proxies/default.xml
/apiproxy/targets/default.xml
/apiproxy/resources/node/server.js

Przygotowanie do wdrożenia aplikacji

Większość aplikacji Node.js ma pliki zależności i zawiera w katalogu głównym plik package.json. W takim przypadku sprawdzoną metodą jest uruchomienie narzędzia npm, aby mieć pewność, że katalog najwyższego poziomu node_modules jest wypełniony zależnościami przed wdrożeniem. Jeśli istnieją zależności zdalne, które nie są uwzględnione w node_modules, aplikacja Node.js nie będzie działać w Edge.

Wszystkie zależności w systemie plików możesz łatwo pobrać za pomocą narzędzia npm:

  1. W katalogu głównym aplikacji Node.js uruchom:
$ npm install 

lub

$ npm update

Po zainstalowaniu zależności możesz wdrożyć serwer proxy w Edge.

Wdróż aplikację Node.js w Apigee Edge

Przed wdrożeniem musisz znać nazwę organizacji, nazwę użytkownika i hasło do konta Apigee Edge. Te informacje są potrzebne do prawidłowego sformułowania polecenia narzędzia do wdrażania.

Oto polecenie. Zakłada (flaga -d), że znajdujesz się w katalogu głównym serwera proxy. Jeśli serwer proxy nazywa się foo, wpisz to polecenie w katalogu foo:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
Aby dowiedzieć się, co oznaczają poszczególne flagi polecenia, wykonaj te czynności:

$ apigeetool deployproxy -h

Krótkie podsumowanie:

  • -n Ta flaga umożliwia określenie nazwy serwera proxy, który zostanie utworzony po wdrożeniu aplikacji. Będzie ona widoczna w interfejsie zarządzania.
  • -d Określa katalog główny proxy interfejsu API.
  • Parametry -o, -e, -u-p określają nazwę organizacji, środowisko wdrożenia, nazwę użytkownika i hasło.
To wszystko. Aplikacja Node.js jest owinięta w serwer proxy API, wdrażana w Edge i uruchamiana. Jest ona gotowa do przetestowania i czeka na żądania.

Testowanie nowego proxy interfejsu API

Właśnie dodałeś aplikację Node.js do istniejącego serwera proxy interfejsu API i wdrożyłeś go w Apigee Edge. Aby to przetestować, uruchom to polecenie cURL. Zakładamy, że używana jest domyślna ścieżka podstawowa (/). Ścieżka podstawowa jest określona w pliku konfiguracji punktu końcowego proxy. Zastąp ciąg org_name nazwą organizacji. Jeśli nie masz zainstalowanego cURL, możesz wpisać adres URL w przeglądarce.

$ curl http://org_name-test.apigee.net/
Hello, Node!

Wyświetlanie nowego serwera proxy w interfejsie zarządzania

Zaloguj się na konto Apigee Edge i otwórz stronę Proxy interfejsu API. Zobaczysz tam serwer proxy o nazwie „hellonode”.

Kliknij „hellonode”, aby wyświetlić szczegóły serwera proxy. W widoku rozwijania możesz wyświetlić przesłany kod źródłowy, dodać zasady, edytować przepływy itp.

Dalsze kroki

Informacje o debugowaniu aplikacji Node.js działających w Apigee Edge znajdziesz w artykule Debugowanie i rozwiązywanie problemów z serwerami pośredniczącymi Node.js.