Node.js zu einem vorhandenen API-Proxy hinzufügen

Sie lesen die Dokumentation zu Apigee Edge.
Sehen Sie sich die Apigee X-Dokumentation an.
info

Einführung

In diesem Thema wird erläutert, wie Sie einem vorhandenen Proxy in Ihrem lokalen Dateisystem eine Node.js-Anwendung hinzufügen und den Proxy in Apigee Edge bereitstellen.

Entwicklungsumgebung vorbereiten

In diesem Thema wird davon ausgegangen, dass Sie bereits eine Proxy-Entwicklungsumgebung auf Ihrem lokalen System eingerichtet haben und eine Node.js-Anwendung darin einbinden möchten.

Die grundlegende Struktur einer Proxyanwendung, die eine Node.js-Anwendung enthält, folgt dem in der Abbildung unten dargestellten Muster mit dem Basisverzeichnis /apiproxy und Unterverzeichnissen für Ressourcen, Ziele und Proxys. Im Ordner apiproxy/resources/node müssen Sie Node.js-Dateien ablegen. Die anderen Ordner enthalten XML-Dateien, in denen Proxy- und Zielendpunkte, Proxy- und bedingte Abläufe usw. definiert werden. Eine ausführlichere Beschreibung der API-Proxy-Struktur finden Sie in der Referenz zur API-Proxy-Konfiguration.

Beachten Sie jedoch, dass jeder Node.js-Code, der Teil des Proxys ist, unter /apiproxy/resources/node platziert werden muss. Dort erwartet Edge es bei der Bereitstellung.

Node.js-Ziel mit ScriptTarget angeben

Um Node.js in einen Proxy zu integrieren, müssen Sie das <ScriptTarget>-Element in der XML-Datei des Zielendpunkts angeben. In der Proxydateistruktur befindet sich diese XML-Datei unter apiproxy/targets. Standardmäßig lautet der Dateiname default.xml.

Beachten Sie für den Kontext, dass ein Zielendpunkt normalerweise auf einen Back-End-Dienst verweist. In diesem Fall wird der Apigee-Mock-Zieldienst aufgerufen. Eine Zielendpunktdefinition sieht so aus:

<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>

Das Element <HTTPTargetConnection> gibt die URL des Back-End-Dienstes an, also des Apigee-Mock-Zieldienstes.

Bei Node.js ist jedoch die Node.js-Anwendung selbst das Ziel. Dies wird mit <ScriptTarget> in der Datei apiproxy/targets/default.xml angegeben.

Anstatt auf das Ziel, das das <HTTPTargetConnection>-Element zur Angabe der URL eines Back-End-Dienstes verwendet, wird die Node.js-Anwendung direkt mit einem <ScriptTarget>-Element referenziert. Das sieht dann so aus:

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

Dem Parameter <ResourceURL> muss immer das Präfix node:// vorangestellt werden, gefolgt vom Namen des Haupt-Node.js-Scripts. Wie bereits erwähnt, müssen sich Node.js-Ressourcen in /apiproxy/resources/node im API-Proxy-Bereich befinden.

Sie können in ScriptTarget zusätzliche Parameter festlegen. Weitere Informationen finden Sie unter Erweiterte ScriptTarget-Konfiguration.

Im Folgenden finden Sie den Quellcode der Haupt-Node.js-Datei server.js. Es ist der einfache HTTP-Server, der beim Empfang einer Anfrage „Hello World!“ zurückgibt:

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');
});

Zusammenfassend: Angenommen, die Haupt-Node.js-Anwendung ist in einer Datei namens server.js implementiert und die Endpunktkonfigurationen heißen beide default.xml, dann hat der API-Proxy mit dem Node.js-Script die folgende Struktur:

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

Bereitstellung der Anwendung vorbereiten

Die meisten Node.js-Anwendungen haben Abhängigkeitsdateien und enthalten im Basisverzeichnis eine Datei package.json. In diesem Fall empfiehlt es sich, das Dienstprogramm npm auszuführen, um dafür zu sorgen, dass das oberste Verzeichnis node_modules vor der Bereitstellung mit den Abhängigkeiten gefüllt wird. Wenn Remote-Abhängigkeiten vorhanden sind, die nicht in node_modules enthalten sind, wird Ihre Node.js-Anwendung nicht auf Edge ausgeführt.

Mit dem Dienstprogramm npm können Sie alle Abhängigkeiten ganz einfach in Ihr Dateisystem abrufen:

  1. Führen Sie im Basisverzeichnis Ihrer Node.js-Anwendung Folgendes aus:
$ npm install 

oder

$ npm update

Sobald die Abhängigkeiten installiert sind, können Sie Ihren Proxy in Edge bereitstellen.

Node.js-Anwendung in Apigee Edge bereitstellen

Bevor Sie die Bereitstellung starten, benötigen Sie den Namen Ihrer Organisation, den Nutzernamen und das Passwort für Ihr Apigee Edge-Konto. Sie benötigen diese Informationen, um den Befehl des Bereitstellungstools richtig zu bilden.

Hier ist der Befehl. Mit dem Flag „-d“ wird davon ausgegangen, dass Sie sich im Stammverzeichnis Ihres Proxys befinden. Wenn Ihr Proxy foo heißt, geben Sie den folgenden Befehl aus dem Verzeichnis foo ein:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
So erfahren Sie, was die einzelnen Befehlsflags bedeuten:

$ apigeetool deployproxy -h

Hier eine kurze Zusammenfassung:

  • -n Mit diesem Flag können Sie den Namen des Proxys angeben, der bei der Bereitstellung der Anwendung erstellt wird. Dieser Name wird in der Verwaltungsoberfläche angezeigt.
  • -d Gibt das Stammverzeichnis des API-Proxy an.
  • Mit -o, -e, -u und -p geben Sie den Namen der Organisation, die Bereitstellungsumgebung, den Nutzernamen und das Passwort an.
Das wars auch schon. Ihre Node.js-Anwendung wird in einen API-Proxy eingebunden, in Edge bereitgestellt und ausgeführt. Es wartet auf Anfragen und ist bereit zum Testen.

Neuen API-Proxy testen

Sie haben einem vorhandenen API-Proxy eine Node.js-Anwendung hinzugefügt und den Proxy in Apigee Edge bereitgestellt. Führen Sie zum Testen diesen cURL-Befehl aus. Es wird davon ausgegangen, dass der Standardbasispfad (/) verwendet wird (Basispfad ist in der Konfigurationsdatei des Proxy-Endpunkts angegeben). Ersetzen Sie org_name durch den Namen Ihrer Organisation. Wenn cURL nicht installiert ist, können Sie die URL in einen Browser eingeben.

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

Neuen Proxy in der Verwaltungsoberfläche ansehen

Melden Sie sich in Ihrem Apigee Edge-Konto an und rufen Sie die Seite „API-Proxys“ auf. Sie sehen hier den Proxy namens „hellonode“.

Klicken Sie auf „hellonode“, um Details zum Proxy aufzurufen. In der Entwicklungsansicht können Sie den von Ihnen hochgeladenen Quellcode aufrufen, Richtlinien hinzufügen, Abläufe bearbeiten usw.

Nächste Schritte

Informationen zum Debuggen von Node.js-Anwendungen, die auf Apigee Edge ausgeführt werden, finden Sie unter Debugging und Fehlerbehebung bei Node.js-Proxys.