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

Sie sehen die Dokumentation zu Apigee Edge.
Zur Apigee X-Dokumentation
weitere Informationen

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 gehen wir davon aus, dass Sie auf Ihrem lokalen System bereits eine Proxyentwicklungsumgebung eingerichtet haben und eine Node.js-Anwendung einbinden möchten.

Die Grundstruktur einer Proxyanwendung, die eine Node.js-Anwendung enthält, folgt dem in der Abbildung unten gezeigten Muster, mit einem /apiproxy Basisordner und Unterordnern für resources, targets und proxies. Im Ordner apiproxy/resources/node müssen Node.js-Dateien gespeichert werden. Die anderen Ordner enthalten XML-Dateien, die Proxy- und Endpunkte, Proxy-Flows, bedingte Abläufe usw. definieren. Eine ausführlichere Beschreibung der API-Proxy-Struktur finden Sie in der Referenz zur API-Proxy-Konfiguration.

Denken Sie daran, dass jeder Node.js-Code, der Teil des Proxys ist, unter /apiproxy/resources/node platziert werden muss. Hier erwartet Edge, sie bei der Bereitstellung zu finden.

Node.js-Ziel mit ScriptTarget angeben

Der Schlüssel zur Integration von Node.js in einen Proxy besteht darin, das <ScriptTarget>-Element in der XML-Datei des Zielendpunkts anzugeben. In der Proxy-Dateistruktur befindet sich diese XML-Datei in apiproxy/targets. Standardmäßig lautet der Dateiname default.xml.

Bedenken Sie, dass ein Zielendpunkt normalerweise auf einen Back-End-Dienst verweist. In diesem Fall verwenden wir den Apigee-Mock-Zieldienst. 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, dem simulierten Zieldienst von Apigee.

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

Statt auf das Ziel, das das <HTTPTargetConnection>-Element verwendet, um die URL eines Back-End-Dienstes anzugeben, wird die Node.js-Anwendung direkt mithilfe eines <ScriptTarget>-Elements referenziert. Beispiel:

<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 Node.js-Hauptskripts. Wie bereits erwähnt, müssen sich Node.js-Ressourcen in /apiproxy/resources/node im API-Proxybereich befinden.

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

Für dieses Beispiel ist hier der Quellcode für die Node.js-Hauptdatei namens server.js. Er ist der einfache HTTP-Server, der „Hello World!“ zurückgibt, wenn er eine Anfrage erhält:

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

Wenn wir also davon ausgehen, dass die Node.js-Hauptanwendung in einer Datei namens server.js implementiert ist und die Endpunktkonfigurationen beide default.xml heißen, dann hat der API-Proxy mit dem Node.js-Skript 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 eine package.json-Datei im Basisverzeichnis. In diesem Fall empfiehlt es sich, das Dienstprogramm npm auszuführen, damit das übergeordnete 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 npm-Dienstprogramm können Sie alle Abhängigkeiten in Ihrem Dateisystem abrufen:

  1. Führen Sie im Basisverzeichnis der Node.js-Anwendung folgenden Befehl aus:
$ npm install 

oder

$ npm update

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

Node.js-Anwendung in Apigee Edge bereitstellen

Vor der Bereitstellung benötigen Sie den Organisationsnamen, den Nutzernamen und das Passwort für Ihr Apigee Edge-Konto. Sie benötigen diese Informationen, um den Befehl für das Bereitstellungstool korrekt zu erstellen.

Hier ist der Befehl. Dabei wird davon ausgegangen (mit dem Flag „-d“), dass Sie sich im Stammverzeichnis Ihres Proxys befinden. Wenn der 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 .
Informationen zur Bedeutung der einzelnen Befehls-Flags:

$ apigeetool deployproxy -h

Hier eine kurze Zusammenfassung:

  • -n Mit diesem Flag können Sie den Namen des Proxys angeben, der beim Bereitstellen der Anwendung erstellt wird. Sie sehen diesen Namen in der Verwaltungs-UI.
  • -d gibt das Stammverzeichnis des API-Proxys an.
  • -o, -e, -u und -p geben den Organisationsnamen, die Bereitstellungsumgebung, den Nutzernamen und das Passwort an.
Das wars auch schon. Ihre Node.js-App wird in einen API-Proxy eingebettet, in Edge bereitgestellt und ausgeführt. Er wartet auf Anfragen und kann getestet werden.

Neuen API-Proxy testen

Sie haben gerade eine Node.js-Anwendung zu einem vorhandenen API-Proxy hinzugefügt und den Proxy in Apigee Edge bereitgestellt. Testen Sie es mit dem folgenden cURL-Befehl. Es wird davon ausgegangen, dass der Standardbasispfad (/) verwendet wird (Basispfad ist in der Konfigurationsdatei des Proxyendpunkts angegeben). Ersetzen Sie org_name durch Ihren Organisationsnamen. Wenn Sie cURL nicht installiert haben, 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 bei Ihrem Apigee Edge-Konto an und rufen Sie die Seite "API-Proxys" auf. Dort wird der Proxy "hellonode" aufgeführt.

Klicken Sie auf „hellonode“, um Details zum Proxy aufzurufen. In der Entwicklungsansicht können Sie den hochgeladenen Quellcode sehen, 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 Fehler bei Node.js-Proxys beheben.