Aggiunta di Node.js a un proxy API esistente

Stai visualizzando la documentazione di Apigee Edge.
Vai alla documentazione di Apigee X.
informazioni

Introduzione

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

Preparazione dell'ambiente di sviluppo

In questo argomento, supponiamo che tu abbia già configurato un ambiente di sviluppo proxy sul tuo sistema locale e che tu voglia integrare un'applicazione Node.js al suo interno.

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

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

Specifica la destinazione Node.js con ScriptTarget

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

Per contesto, considera che un endpoint di destinazione di solito rimanda a un qualche tipo di servizio di backend. In questo caso, abbiamo raggiunto il servizio di destinazione fittizio Apigee. Una definizione di endpoint di destinazione ha il seguente aspetto:

<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 di destinazione fittizio Apigee.

Tuttavia, nel caso di Node.js, l'applicazione Node.js stessa è la destinazione. Per specificare questo valore, utilizza <ScriptTarget> nel file apiproxy/targets/default.xml.

Invece della destinazione che utilizza l'elemento <HTTPTargetConnection> per specificare l'URL di un servizio di backend, all'applicazione Node.js viene fatto riferimento direttamente tramite un elemento <ScriptTarget>, in questo modo:

<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 trovarsi in /apiproxy/resources/node nell'ambito del proxy API.

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

Ai fini di questo esempio, ecco il codice sorgente per il file Node.js principale, chiamato 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');
});

Riassumendo, supponendo che l'applicazione Node.js main 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 avrà la seguente struttura:

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

Prepara il deployment dell'applicazione

La maggior parte delle app Node.js ha file di dipendenze e include un file package.json nella directory di base. In questo caso, la best practice prevede di eseguire l'utilità npm per garantire che la directory node_modules di primo livello venga completata con le dipendenze prima del 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 dal tuo 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 su Edge.

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

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

Ecco il comando. Presuppone (con il flag -d) che ti trovi nella directory radice del proxy. Se il proxy è chiamato foo, inserisci questo comando dalla directory foo:

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

$ apigeetool deployproxy -h

Per un breve riepilogo:

  • -n Questo flag consente di specificare il nome del proxy che verrà creato al momento del deployment dell'app. Questo nome viene visualizzato nell'interfaccia utente di gestione.
  • -d Specifica la directory radice del proxy API.
  • -o, -e, -u e -p specificano il nome dell'organizzazione, l'ambiente di deployment, il nome utente e la password.
Questo è tutto. L'app Node.js è sottoposta a wrapping in un proxy API, ne è stato eseguito il deployment in Edge ed è stato eseguito. È in attesa di richieste ed è pronto per essere testato.

Testa il nuovo proxy API

Hai appena aggiunto un'app Node.js a un proxy API esistente e hai eseguito il deployment del proxy su Apigee Edge. Per verificarlo, 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 il nome della tua organizzazione con org_name. Se cURL non è installato, 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 alla pagina dei proxy API. Vedrai il proxy denominato "hellonode" nell'elenco.

Fai clic su "hellonode" per visualizzare i dettagli del proxy. Nella visualizzazione Sviluppo puoi vedere il codice sorgente che hai caricato, aggiungere criteri, 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.