Aggiunta di Node.js a un proxy API esistente

Stai visualizzando la documentazione di Apigee Edge.
Consulta la documentazione di Apigee X.
info

Introduzione

Questo argomento spiega come aggiungere un'applicazione Node.js a un proxy esistente nel file system locale e come eseguire il deployment del proxy in Apigee Edge.

Preparazione dell'ambiente di sviluppo

In questo argomento, presupponiamo che tu abbia già configurato un ambiente di sviluppo proxy sul tuo sistema locale e che tu voglia integrarvi un'applicazione Node.js.

La struttura di base di un'applicazione proxy che include un'app Node.js segue il pattern mostrato nella figura seguente, con una cartella /apiproxy di base e sottocartelle per risorse, target e proxy. La cartella apiproxy/resources/node è dove devono essere inseriti i file Node.js. Le altre cartelle contengono file XML che definiscono endpoint proxy e target, flusso proxy, flussi condizionali e così via. Per una descrizione più completa della struttura del proxy API, consulta Riferimento per la configurazione dei proxy API.

Ricorda che qualsiasi codice Node.js che fa parte del proxy deve essere inserito in /apiproxy/resources/node. È qui che Edge si aspetta di trovarlo quando viene eseguito il deployment.

Specifica il target Node.js con ScriptTarget

La chiave per integrare Node.js in un proxy è specificare l'elemento <ScriptTarget> in nel file XML dell'endpoint target. Nella struttura dei file proxy, questo file XML si trova in apiproxy/targets. Per impostazione predefinita, il nome del file è default.xml.

Per il contesto, tieni presente che un endpoint target di solito punta a un servizio di backend di qualche tipo. In questo caso, raggiungiamo il servizio target di simulazione di Apigee. Una definizione di endpoint target è simile alla seguente:

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

L'elemento <HTTPTargetConnection> specifica l'URL del servizio di backend, il servizio target di simulazione di Apigee.

Tuttavia, nel caso di Node.js, l' applicazione Node.js stessa è il target. Puoi specificarlo con <ScriptTarget> nel file apiproxy/targets/default.xml.

Anziché utilizzare l'elemento <HTTPTargetConnection> per specificare l'URL di un servizio di backend, l'applicazione Node.js viene referenziata direttamente utilizzando un elemento <ScriptTarget> come segue:

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

Il parametro <ResourceURL> deve sempre essere preceduto da node://, seguito dal nome dello script Node.js principale. Inoltre, come indicato in precedenza, le risorse Node.js devono risiedere in /apiproxy/resources/node nell'ambito del proxy API.

Puoi impostare parametri aggiuntivi in ScriptTarget. Per maggiori dettagli, consulta Configurazione avanzata di ScriptTarget.

Ai fini di questo esempio, ecco il codice sorgente del file Node.js principale, denominato server.js. È il server HTTP di base che restituisce "Hello World!" quando riceve una richiesta:

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

Per riassumere, supponendo che l'applicazione Node.js principale sia implementata in un file denominato server.js e che le configurazioni degli endpoint siano entrambe denominate default.xml, il proxy API contenente lo script Node.js ha la seguente struttura:

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

Preparati a eseguire il deployment dell'applicazione

La maggior parte delle app Node.js ha file di dipendenza e include un file package.json nella directory di base. In questo caso, la best practice è eseguire l'utilità npm per assicurarti che la directory node_modules di primo livello sia popolata con le dipendenze prima di eseguire il deployment. Se sono presenti dipendenze remote non incluse in node_modules, l'applicazione Node.js non verrà eseguita su Edge.

Puoi recuperare facilmente tutte le dipendenze nel file system utilizzando l'utilità npm:

  1. Dalla directory di base dell'applicazione Node.js, esegui:
$ npm install 

o

$ npm update

Una volta installate le dipendenze, puoi eseguire il deployment del proxy in Edge.

Esegui il deployment dell'app Node.js in Apigee Edge

Prima di eseguire il deployment, devi conoscere il nome dell'organizzazione, il nome utente e la password per il tuo account Apigee Edge. Queste informazioni sono necessarie per formare correttamente il comando dello strumento di deployment.

Ecco il comando. Suppone (con il flag -d) che tu sia nella directory principale del tuo proxy. Se il proxy si chiama foo, inserisci questo comando dalla foo directory:

$ apigeetool deployproxy -u username -p password -o org -e test -n hellonode -d .
Per informazioni sul significato di ciascun flag del comando:

$ apigeetool deployproxy -h

Per un riepilogo rapido:

  • -n Questo flag ti consente di specificare il nome del proxy che verrà creato quando viene eseguito il deployment dell'app. Vedrai questo nome nell'interfaccia utente di gestione.
  • -d Specifica la directory principale del proxy API.
  • -o, -e, -u e -p specificano il nome dell'organizzazione, ambiente di deployment, nome utente e password.
Ecco fatto. L'app Node.js è racchiusa in un proxy API, di cui è stato eseguito il deployment in Edge e viene eseguita. È in attesa di richieste e pronta per essere testata.

Testa il nuovo proxy API

Hai appena aggiunto un'app Node.js a un proxy API esistente e hai eseguito il deployment del proxy in Apigee Edge. Per testarlo, esegui questo comando cURL. Supponiamo che venga utilizzato il percorso di base predefinito (/) (il percorso di base è specificato nel file di configurazione dell'endpoint proxy). Assicurati di sostituire org_name con il nome della tua organizzazione. Se non hai installato cURL, puoi inserire l'URL in un browser.

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

Visualizza il nuovo proxy nell'interfaccia utente di gestione

Accedi al tuo account Apigee Edge e vai a alla pagina Proxy API. Vedrai il proxy denominato "hellonode" elencato qui.

Fai clic su "hellonode" per visualizzare i dettagli del proxy. Nella visualizzazione Sviluppa, puoi visualizzare il codice sorgente che hai caricato, aggiungere policy, modificare i flussi e così via.

Passaggi successivi

Per informazioni sul debug delle applicazioni Node.js in esecuzione su Apigee Edge, consulta Debug e risoluzione dei problemi dei proxy Node.js.