Deployment di un'app Node.js autonoma

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

Questo argomento spiega come eseguire il deployment di un'applicazione Node.js dal sistema locale ad Apigee Edge. In questo argomento, vedremo come utilizzare uno strumento a riga di comando chiamato apigeetool per eseguire il deployment delle applicazioni Node.js su Apigee Edge.

Informazioni sul deployment del codice Node.js su Apigee Edge

Puoi eseguire il deployment di un'applicazione API Node.js esistente, inclusi tutti i moduli Node.js dipendenti, dal sistema locale ad Apigee Edge utilizzando un'utilità a riga di comando chiamata apigeetool. L'utilità raggruppa automaticamente l'applicazione e le relative dipendenze in un proxy API ed esegue il deployment su Edge.

Ad esempio, supponiamo di aver utilizzato Express per creare un'applicazione web in Node.js. L' applicazione viene eseguita come server HTTP che rimane in attesa delle richieste HTTP, le elabora, restituisce i dati e così via. Quando utilizzi apigeetool per eseguire il deployment di un'applicazione Node.js su Edge, questa viene racchiusa in un proxy ed eseguita nel contesto della piattaforma Edge. Puoi quindi chiamare l'applicazione tramite il nuovo URL del proxy e aggiungere valore "vestendola" con le funzionalità standard di Edge come la sicurezza OAuth, le policy relative alle quote, le policy di protezione dalle minacce, i flussi condizionali, la memorizzazione nella cache e molte altre.

Che cosa fa apigeetool?

Quando esegui l'utilità apigeetool con l'opzione deploynodeapp, questa:

  • Genera un bundle di configurazione del proxy API per ospitare l'applicazione Node.js.
  • Pacchettizza l'applicazione Node.js con tutti i pacchetti Node.js installati con NPM (Node Packaged Modules).
  • Importa il bundle di configurazione del proxy API nell'organizzazione specificata su Apigee Edge utilizzando l'API di gestione di Edge.
  • Esegue il deployment del proxy API in un ambiente.
  • Esegue l'applicazione Node.js su Apigee Edge e la rende disponibile sulla rete.

Preparazione all'utilizzo di apigeetool

Prima di iniziare, devi installare l'utilità apigeetool.

Puoi installare apigeetool tramite npm o clonando e collegando il codice da GitHub.

Installazione da npm

Il modulo apigeetool e le relative dipendenze sono progettati per Node.js e sono disponibili tramite npm utilizzando il seguente comando:

$ sudo npm install -g apigeetool

In genere, l'opzione -g inserisce i moduli in: /usr/local/lib/node_modules/apigeetool sulle macchine basate su *nix.

Installazione da GitHub

Scarica o clona gli strumenti della piattaforma API da GitHub. Per istruzioni sull'installazione, consulta il file README nella directory principale del repository.

$ git clone https://github.com/apigee/apigeetool-node.git

Una volta completata l'installazione, assicurati che l'eseguibile apigeetool sia in nel PATH. Puoi testarlo digitando:

$ apigeetool -h

Eseguire il deployment di un'applicazione Node.js su Edge con apigeetool

Nota: prima di eseguire il deployment, devi conoscere il nome dell'organizzazione Apigee Edge , il nome utente e la password del tuo account Apigee Edge. Queste informazioni sono necessarie per formare correttamente il apigeetool comando.

Per eseguire il deployment di un'applicazione Node.js utilizzando apigeetool:

  1. In una finestra del terminale, cd la directory principale dell'applicazione Node.js.
  2. Esegui l'utilità apigeetool con il deploynodeapp comando:

    $ apigeetool deploynodeapp -n {A name for your new proxy} -d {The root directory of your Node.js app} -m {The name of the main Node.js file} -o {Your org name on Edge} -e {The environment to deploy to} -b {The base URL for your proxy} -u {Your Edge email address} -p {Your Edge password}
    
    Ad esempio:

    $ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
    
  3. Controlla l'output nella finestra del terminale. Dovrebbe essere simile al seguente:

    Importing new application myNodeApp
    Imported new app revision 1
    Deploying revision 1
      Deployed.
    Proxy: "myNodeApp" Revision 1
      Environment: test BasePath: /myNodeApp
      Status: deployed

    Se vedi "Status: deployed", hai finito. È andato tutto bene. La tua app Node.js è racchiusa in un proxy API, di cui è stato eseguito il deployment su Edge, è in esecuzione e in attesa di gestire le richieste. È pronta per essere testata.

  4. Testa il proxy. Ad esempio:

    $ curl http://myorg-test.apigee.net/myNodeApp
    Hello, My Node App!
    
  5. Se vuoi, accedi al tuo account Apigee Edge e vai alla pagina Proxy API dell' interfaccia utente di gestione. Vedrai il nuovo proxy elencato lì.

Come apigeetool gestisce i file e i moduli dipendenti

Se l'applicazione Node.js dipende da moduli installati, apigeetool li gestisce comprimendo la cartella node_modules e aggiungendola al bundle del proxy. Non è necessaria alcuna azione aggiuntiva. Lo stesso vale per le directory che contengono codice sorgente aggiuntivo. L' utilità apigeetool le comprime ed esegue il deployment con il bundle.

Non puoi modificare i file in queste directory compresse nell'editor dell'interfaccia utente di gestione di Edge. Se devi modificarli, puoi esportare il progetto, modificare i file localmente e poi eseguire di nuovo il deployment utilizzando apigeetool o importando il progetto esportato utilizzando l'interfaccia utente di gestione. Vedi anche "Esportare e importare un proxy con codice Node.js".

Informazioni di base sull'utilizzo di apigeetool

Per informazioni di base sull'utilizzo dei parametri di input dell'utilità apigeetool, inserisci:

$ apigeetool deploynodeapp -h

  Usage: deploynodeapp -n [name] -o [organization] -e [environment]
  -d [directory name] -m [main script file]
  -u [username] -p [password]
  -b [base path] -l [apigee API url] -z [zip file] -i -h
  -o Apigee organization name
  -e Apigee environment name
  -n Apigee proxy name
  -d Apigee proxy directory
  -m Main script name: Should be at the top level of the directory
  -u Apigee user name
  -p Apigee password
  -b Base path (optional, defaults to /)
  -L Apigee API URL (optional, defaults to https://api.enterprise.apigee.com)
  -z ZIP file to save (optional for debugging)
  -i import only, do not deploy
  -R Resolve Node.js modules on Apigee Edge. Equivalent to running npm install on your project. 
  -U Uploads Node.js modules to Apigee Edge. 
  -h Print this message

Creare un nuovo proxy con file Node.js esistenti

Un altro modo per integrare un'applicazione Node.js esistente in un proxy API è aggiungere l' applicazione quando crei il proxy. Puoi farlo interamente tramite l'interfaccia utente di gestione e la finestra di dialogo Nuovo proxy API.

  1. Nella pagina di riepilogo del proxy API, fai clic su +Proxy API.
  2. Nella finestra di dialogo Nuovo proxy API, seleziona Node.js esistente.
  3. Utilizza il pulsante Scegli file per selezionare uno o più file Node.js da importare.
  4. Assegna un nome al proxy. In questo esempio, lo chiameremo hellonode.
  5. Aggiungi la versione /v1 al percorso di base del progetto. Il controllo delle versioni dell'API è una best practice.
  6. Fai clic su Crea.
  7. Fai clic su Sviluppa per accedere alla visualizzazione Sviluppa.
  8. Apri il file TargetEndpoint nell'editor di codice.
  9. Assicurati che l'elemento <ScriptTarget> specifichi il file Node.js principale, come segue:


    <ScriptTarget>
            <ResourceURL>node://server.js</ResourceURL>
            <Properties/>
    </ScriptTarget>
  10. Fai clic su Salva.

Aggiungere e richiamare nuovi file di risorse Node.js

Un altro modo per aggiungere codice Node.js a un proxy è aggiungerlo direttamente, tramite l'interfaccia utente o caricandolo dal file system locale. Puoi anche specificare quale file Node.js è il file principale, ovvero il file richiamato da Edge quando viene eseguito il deployment del proxy.

Aggiungere nuovi file Node.js tramite l'interfaccia utente

L'interfaccia utente di gestione ti consente di aggiungere altri file sorgente Node.js a un proxy sulla piattaforma Edge. Puoi crearli direttamente nell'interfaccia utente o importarli dal file system. Innanzitutto, vediamo come farlo dall'interfaccia utente.

Per creare un nuovo file di risorse Node.js:

  1. Nella visualizzazione Sviluppa, seleziona Nuovo script dal menu Nuovo.
  2. Nella finestra di dialogo Aggiungi script, seleziona il tipo di file Node e assegna un nome allo script.
  3. Fai clic su Aggiungi.

Il nuovo file Node.js vuoto si apre nell'editor. Puoi tagliare e incollare il codice nel file. Il file viene visualizzato anche nella sezione Script del navigatore.

[[{"type":"media","view_mode":"media_large","fid":"2431","attributes":{"alt":"","class":"media-image","height":"312","typeof":"foaf:Image","width":"417"}}]]

Importare file Node.js dal file system

Per importare un file Node.js dal tuo file system al proxy:

  1. Nella visualizzazione Sviluppa, seleziona Nuovo script dal menu Nuovo.
  2. Nella finestra di dialogo Aggiungi script, fai clic su Importa script.
  3. Utilizza lo strumento file per selezionare il file Node.js.
  4. Il nome del file viene aggiunto alla finestra di dialogo, ma puoi modificarlo se vuoi.
  5. Fai clic su Aggiungi. Il file viene visualizzato nella sezione Script del navigatore e si apre nell'editor.
  6. Fai clic su Salva.

Se vuoi richiamare il file importato, è necessario un passaggio aggiuntivo, come spiegato nella sezione successiva.

Richiamare un file Node.js importato

Non puoi semplicemente richiamare un file Node.js appena importato o creato. Il motivo è che Edge richiede che un file Node.js sia il file principale. Il file principale viene specificato nell' <ScriptTarget> elemento della definizione dell'endpoint di destinazione. Per specificare quale file è il file Node.js principale:

  1. In Endpoint di destinazione nel navigatore, fai clic sul nome dell'endpoint di destinazione (in genere chiamato default).
  2. Nell'editor di codice, modifica l'elemento <ScriptTarget> modificando <ResourceURL> in modo che rifletta il nome del file che vuoi che sia il file Node.js principale. Ad esempio, se vuoi che un file chiamato hello-world.js sia il file principale, inserisci: node://hello-world.js nell'elemento ResourceURL.
  3. Fai clic su Salva.

A questo punto, puoi richiamare il file con il percorso del proxy utilizzato in precedenza. Ad esempio, abbiamo esaminato l'esempio Hello World!, in cui è specificato il percorso di base v1/helloè specificato. Tuttavia, puoi modificare il percorso di base modificando l'endpoint del proxy.

  1. In Endpoint del proxy nel navigatore, fai clic sul nome dell'endpoint del proxy (in genere chiamato default).
  2. Nell'editor di codice, modifica l'elemento <HttpProxyConnection> modificando il <BasePath> con il nome che preferisci. Ad esempio, se l'elemento <BasePath> corrente è v1/hello e vuoi che sia v1/my-node-file, modifica l'elemento <BasePath> come segue:

    <BasePath>/v1/my-node-file</BasePath>
  3. Fai clic su Salva.
  4. Richiama il proxy utilizzando il nuovo percorso di base, come segue:

    $ curl http://myorg-test.apigee.net/v1/my-node-file
    Hello, World!
    

Esportare e importare un proxy con codice Node.js

Dopo aver eseguito il deployment di un proxy contenente codice Node.js su Edge, puoi sempre esportare il proxy di nuovo nel tuo sistema, lavorarci e poi reimportarlo in Edge utilizzando l'interfaccia utente di gestione. Questo tipo di tecnica di sviluppo di andata e ritorno è di uso comune.

  1. Nella pagina di riepilogo del proxy API, fai clic su Sviluppa.
  2. Nella pagina Sviluppa, seleziona Scarica revisione corrente.
  3. Decomprimi il file scaricato sul tuo sistema.

Puoi importare di nuovo il bundle del proxy in Edge selezionando Importa in una nuova revisione dallo stesso menu.

Puoi anche utilizzare l'API per eseguire il deployment dei proxy. Per maggiori dettagli, vedi Eseguire il deployment dei proxy dalla riga di comando.

Passaggi successivi

Nell'argomento successivo, Aggiungere Node.js a un proxy API esistente, spieghiamo come aggiungere un'app Node.js a un proxy esistente nel file system ed eseguirne il deployment su Edge.