Como criar uma API RESTful do Node.js usando Express.js no Ubuntu 16.04 LTS

Você está aqui:
Tempo estimado de leitura: 5 min

Neste tutorial, você aprenderá a configurar uma API RESTful completa, que servirá a solicitações HTTP usando Node.js e Express enquanto faz proxy reverso no NGINX, no Ubuntu 16.04 LTS. Nós estaremos utilizando um aplicativo chamado Postman, uma ferramenta de desenvolvimento de API muito conhecida, para testar nossa API e garantir que ela esteja totalmente funcional e funcionando corretamente. O Node.js é uma estrutura JavaScript rápida e de plataforma cruzada baseada no mecanismo V8 do Chrome. Ele é usado em aplicativos de desktop e de servidor e é famoso por seu tratamento de loop de evento single-threaded. Usaremos o Node.js como backend para nossa API RESTful, junto com o Express.js, nossa estrutura de aplicativos da Web criada para o Node.js. Express.js é lançado como software livre e aberto. O Express é do lado do servidor, escrito em JavaScript e projetado para criar APIs, o que o torna perfeito para o nosso projeto. Por outro lado, o Postman é um cliente HTTP muito poderoso, com desenvolvimento de API em mente. Ele apresenta todas as ferramentas que você poderia desejar para o desenvolvimento de APIs.

Instalando o carteiro

Primeiro, você quer ir até o site do Postman , baixar e instalar o Postman no seu PC principal (não no seu servidor). Todas as instruções de instalação estarão em seu site.

Instalando o Node.js

Para começar, primeiro precisamos instalar o Node.js para que possamos começar a desenvolver nossa API. Nós estaremos baixando e instalando o Node.js no site oficial.

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

Além disso, você também desejará obter as ferramentas de compilação necessárias, que serão úteis na compilação de módulos.

sudo apt-get install build-essential

Para este tutorial, usaremos a versão LTS do Node.js, que é a versão 8.9.3.

Inicializando nosso projeto Node.js

Vamos precisar inicializar um novo projeto Node.js, que conterá um aplicativo. Para fazer isso, crie um novo diretório.

 mkdir expressapi 

Mude para o novo diretório. Uma vez lá dentro, execute npm inite complete todos os prompts necessários. Fique atento ao “ponto de entrada” do seu aplicativo: você criará esse arquivo mais tarde. Quando terminar, você verá um package.jsonarquivo em seu diretório atual. Ele age como uma descrição do nosso projeto e lista todas as dependências necessárias para funcionar.

Configurando o Express.js

Agora vamos configurar o Express.js e suas dependências.

npm install express

O processo de instalação será iniciado. Levará alguns minutos para que tudo termine o download.

Começando nosso arquivo principal

Em seguida, criaremos nosso arquivo inicial principal para nossa API. Aqui é onde você vai usar o “ponto de entrada” que você viu no package.jsonarquivo. Por causa deste tutorial, vou usar o esquema de nomenclatura padrão index.js,.

touch index.js

Em seguida, abra-o no editor de texto nano.

nano index.js

Em nosso arquivo principal, queremos primeiro chamar todos os nossos pacotes principais e registrar nossas rotas.

var express = require('express');        
var app = express();                 
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
var port = process.env.PORT || 8080;  
const router = express.Router();
router.get('/', function(req, res) {
    res.json({ message: 'API is Online!' });   
});

app.use('/api', router);
app.listen(port);
console.log('Listening on port ' + port);

Basicamente, o que estamos fazendo aqui é inicializar nosso aplicativo e configurar um roteador básico para nossa API. Note que nós definimos a porta da nossa aplicação para 8080. Vamos precisar desse número para quando configurarmos nossa API RESTful. Agora estamos prontos para testar nossa API.

Testando nossa API com o Postman

No diretório do projeto, execute o seguinte.

node <filename>.js

Isso iniciará a API, onde <filename>está o arquivo inicial especificado no package.jsonarquivo. Em seguida, abra o Postman no seu PC / Mac e clique no botão ” New” no canto superior direito, depois clique em ” Request“. Quando estiver lá, você deverá ver uma barra que diz ” GET” ao lado dela. Aqui vamos inserir nosso URL de solicitação. Basta digitar o seguinte na seção URL da solicitação e clicar em ” Send“.

`http://your-server-ip:3000/api` 

Você verá ” 'API is online'“.

Rotas de API

Para lidar com rotas, estaremos usando o roteador Express. Se você não sabe o que é um roteador, é essencialmente como os pontos de extremidade do aplicativo respondem às solicitações do cliente. Aqui estão as rotas que iremos configurar como exemplo:

  • /api/numbers – Mostra todos os números de 1-10.
  • /api/letters – Mostra todas as letras do AZ.

Agora vamos configurar nossa primeira estrutura de middleware de rota, assim.

router.use(function(req, res, next) {
   console.log('We've got something.');
   next() //calls next middleware in the application.
});

router.route('/numbers/:number').get((req, res) => {
     res.json({result: req.params.number + 1})
});

Neste exemplo, configuramos uma situação em que um usuário pode solicitar a soma de um número + 1 fornecendo o formato de palavra dele, usando o método GET. Usamos a router.route()função para apontar o número que queremos enviar como resultado. Os parâmetros são nomeados com um ” :” na frente deles. Nós acessamos esses parâmetros via req.params.

Aqui está um exemplo com letras.

   router.route('/letters/:letter').get((req, res) => {
     res.json({result: req.params.letter.toUpperCase()})
});

Usamos o mesmo método acima, mas enviamos a carta como maiúscula.

Introdução ao NGINX

O NGINX é um software de código aberto bem conhecido, usado para servidor web, proxies reversos, streaming e muito mais. Estaremos utilizando o NGINX para inverter o proxy em nossa API, para permitir que o executemos na porta 80, porque o Node.js não permite conexões em portas menores que 1024 sem acesso root. Isso pode ser útil ao vincular seu domínio ao seu servidor.

Configurando o NGINX

Para começar a instalar o NGINX, você precisará executar o seguinte no seu terminal e aguardar a conclusão da instalação.

sudo apt-get install nginx

Em seguida, queremos criar nosso arquivo de site que o NGINX usará para inverter o proxy em nosso aplicativo.

sudo nano /etc/nginx/sites-available-api.js

Preencha o arquivo com o seguinte e, em seguida, CTRLOpara salvá-lo.

server {
          listen 80;
          location / {
                proxy_set_header X-Real-IP 
                $remote_addr;
                proxy_set_header 
                X-Forwarded-For 
                $proxy_add_x_forwarded_for;
                proxy_set_header Host 
                $http_host;
                proxy_set_header 
                X-NginX-Proxy true; proxy_pass 
                http://127.0.0.1:8080/;
                proxy_redirect off;
                proxy_http_version 1.1;
                proxy_set_header Upgrade 
                $http_upgrade;
                proxy_set_header Connection 
                "upgrade";
                proxy_redirect off;
                proxy_set_header 
               X-Forwarded-Proto $scheme;
       }
}

Usando a mesma porta em que executamos nosso aplicativo anteriormente, estamos dizendo ao Nginx para redirecionar todas as solicitações do nosso endereço IP na porta 80para nossa API em execução na porta 8080.

Em seguida, ative o proxy reverso ao criar um link simbólico para o arquivo recém-criado na sites-availablepasta:

sudo ln -s /etc/nginx/sites-available/api /etc/nginx/sites-available

Isso garantirá que o NGINX inverta o proxy de nossa API.

Primeira execução com o NGINX

Quando terminarmos a configuração do NGINX, iniciaremos o NGINX e iniciaremos nossa API. Primeiro, reinicie o NGINX.

sudo systemctl restart nginx

Em seguida, volte para o diretório da API e inicie-o.

node <filename>.js

O aplicativo será executado na porta 80. Basta executar o teste de cima com o Postman, para garantir que tudo esteja funcionando corretamente.

Mantendo nossa API em execução

Em um ambiente de produção, você deseja ter certeza de que possui um gerenciador de processos para seus aplicativos Node, para garantir que eles permaneçam em execução permanentemente em segundo plano. Neste tutorial, usaremos um gerenciador de processos chamado PM2 (Process Manager 2), que é um gerenciador de processos para aplicativos Node.js que os manterá ativos para sempre com o mínimo de tempo de inatividade. O PM2 vem com muitas ferramentas de gerenciamento úteis, como parar, recarregar, pausar e muito mais. Para instalar o PM2, digite o seguinte e aguarde a instalação.

sudo npm install pm2 -g

Uma vez instalado, tudo o que você precisa fazer é certificar-se de estar no diretório do projeto, digitar o seguinte e o aplicativo será iniciado.

pm2 start <filename>.js

Gerenciando nosso aplicativo com PM2

Como mencionado anteriormente, o PM2 tem algumas ferramentas úteis que você pode usar para gerenciar melhor seu aplicativo.

  • pm2 stop– Como o nome sugere, isso permite que você pare o aplicativo em execução no momento e mate seu processo. Se o seu aplicativo estiver produzindo um resultado inesperado, pará-lo será útil.
  • pm2 list– A função de lista permite ver todos os aplicativos atualmente em execução via PM2, mapeados por seus nomes. Se você precisar verificar rapidamente o tempo de atividade do aplicativo, use essa ferramenta.
  • pm2 restart– Se o seu aplicativo congela por algum motivo, e você gostaria de recarregá-lo, o reinício do pm2 faz exatamente isso. Ele eliminará o processo de inscrição e o iniciará novamente, sob um processo diferente.
  • pm2 monit– A ferramenta interna de monitoração do PM2 permite visualizar um gráfico dos detalhes específicos do seu aplicativo, como uso da CPU / RAM, em um gráfico no estilo ncurses fácil de usar. Isso é útil se você quiser uma imagem visual da carga da sua aplicação.

Considerações finais

Agora, concluímos nossa tarefa de criar uma API RESTful, utilizando Node.js, Express e fazendo proxy reverso com o NGINX. Sinta-se à vontade para expandir este tutorial. Você pode fazer grandes coisas com sua nova API, como adicionar métodos de autenticação, um banco de dados, melhor roteamento e tratamento de erros e muito, muito mais. Se você tiver um domínio com um registro “A” já configurado para seu endereço IP, poderá acessar sua API pelo seu domínio. Se você quiser saber mais sobre o Express.js, visite o site http://expressjs.com . Para saber mais sobre o NGINX e o proxy reverso, visite http://nginx.com . Para ler mais sobre o PM2, visite sua página em http://pm2.keymetrics.io .

Esse artigo foi útil?
Não Gostei 0
Visualizações: 262

Ainda não Têm uma Conta?

Então Cadastre-se

Nome de Usuário*
E-mail*
Senha*
Confirmar Senha*

Já têm Uma Conta? Click Aqui.

Já tem uma Conta?

Ainda não tem Conta?