Criando API’s Rest com Node.js e Express

Ramon Tavares
Jul 12 · 7 min read

Desenvolvendo APIs Rest com Node.js e Express

Olá Desenvolvedor(a) !!
Hoje irei dar início à uma série de artigos de Nodejs onde irei abordar toda a base necessária para voce iniciar no mundo das APIs.

O que preciso para iniciar?

· Básico de Javascript e ES6
· Nodejs instalado (Link:
https://nodejs.org/en/)

O Nodejs

Graças ao Nodejs e seu interpretador V8, hoje conseguimos utilizar o nosso amado javascript no Backend de nossa aplicação. Podemos criar rotas, buscar registros no nosso banco de dados assim como em outras linguagens ja consagradas no mercado. Outras qualidades mais técnicas irei abordar conforme o andamento da série de artifos

APIs? Hãm? É de comer?

Sem muita enrolação, as aplicações API’s “ Application Programming Interface”, que traduzindo seria algo como “ Interface de Programação de Aplicações”, são aplicações que estão sempre enviando respostas à quem requistar, utilizando JSON que é uma forma de troca de dados simples e rápida entre sistemas
Imagine que você possui 3 sistemas que utilizam os mesmo dados de clientes. Utilizando API você não vai precisar criar nenhuma conexão com o banco de dados em cada um dos sistemas, pois toda a logica para consumir as informações do banco ja está sendo feita pela API e ela mesma ja está enviando essas informações via JSON. O Papel dos 3 sistemas é só fazer a chamada dessa API e montar o Layout baseada nas informações da rota que você está requisitando:

Minha requisição:
http://aprendendoapi.com.br/usuarios

Lá na nossa API, o node está fazendo um SELECT * FROM usuarios no banco e devolvendo todos os usuarios no formato JSON pra quem requisitar a rota /usuarios do domínio http://aprendendoapi.com.br

Resposta dos servidor:
{
“nome”: “Mariazinha”,
“profissao”: “Desenvolvedora”
}

Agora mão na massa!!

Crie uma pasta para o projeto. No meu caso, criei a pasta apinode.
Abra o CMD do windows e navegue até a sua pasta criada e digite:

npm init -y

Iniciando o arquivo de dependencias com o NPM

O NPM vem junto o Nodejs e é a ferramenta de linha de comando que serve para gerenciar as dependencias do nosso projeto. Com o Nodejs instalado, o prompt de comando ja irá reconhecer seus comandos.
o Init irá iniciar nossas dependencias e irá criar um arquivo chamado package.json. Este arquivo conterá informações sobre os módulos/dependencias que estamos utilizando no projeto.

Quando iniciamos o npm init, o gerenciador pede que você passe algumas informações sobre nome do projeto, versão e sua descrição. Utilizamos o parâmetro -y para que o gerenciador utilize respostas padrões, pois essas informações iremos alterar manualmente mais tarde no prorpio arquivo package.json.

Criando nosso servidor

Vamos criar agora na pasta do nosso projeto o arquivo que vai conter o codigo do nosso servidor e vamos chamá-lo de servidor.js. Este arquivo vai ter toda nossa configuração de rotas e qual porta o servidor vai ouvir.

Agora vamos utilizar a nossa primeira dependencia, o Express. Esse nosso novo amigo tem muitas qualidades quando estamos configurando nosso servidor. Por hora vamos utilizar ele para criar um serviço web local, entao vamos utilizar o nosso amigo NPM para baixar a nossa primeira dependencia.

Para isso vamos utilizar o comando:

npm install express

Se tudo deu certo o nosso arquivo package.json ficará assim:

Outra coisa é que tambem foi criada uma pasta chamada node_modules. Enquanto no package.json temos a infomação do nome e da versão da dependência, no node_modules temos todos os arquivos necessários para que ela funcione. Perceba que tem muitas pastas, isto é porque o própio Express necessita de outros módulos para poder funcionar, então nao se preocupe com isso. Com o tempo esta pasta ficará muito pesada por conta dos módulos, por conta disso ela nao será enviada pro nosso ambiente de produção. O nosso arquivo package.json ja contém toda a informação dos módulos que iremos utilizar e o NPM consegue detectar e instalar todos de uma vez com o simples comando:

npm install

Voicê pode deletar a pasta node_modules e fazer este teste agora se quiser.
Ah! Tambem foi criada um arquivo package-lock.json não é? Basicamente este é so um arquivo de cache das nossas dependencias. Ele é inofensivo, relaxa :)

Vamos abrir o arquivo index.js na IDE ou no editor de código de sua preferência, e vamos importar o nosso amigo Express e incorporar todos os seus befícios em uma variável chamada app:

Na linha 2 estamos importando o módulo do Express pra dentro de uma constante chamada express. Utilizei const pois não quero que seu valor altere, por isso, constante (ah vá, Ramon).

Na linha 5 criamos uma outra constante chamada app, nela estamos inicializando o express, então neste caso o app tem acesso a todas as suas funcionalidades.

Agora vamos criar o nosso serviço web e escutar uma porta.
Pra isso vamos utilizar a nossa cosntante app e chamar o método listen() na porta 3333. Vai ficar assim:

OBS: O app.listen() é sempre a ultima linha de codigo, pois devemos primeiro executar toda a configuração do servidor e somente depois ouvir a porta

Agora vamos testar. Abra o CMD novamente e dentro da pasta do projeto execute o comando:

node servidor.js

Se estiver tudo certo não acontecerá nada na tela do CMD, entao
vamos testar o nossos servidor local na porta escolhida.
Abra o navegador e digite:

http://localhost:3333

Se abrir uma página em branco com a mensagem “ Cannot GET / “ , pode chorar de emoção pois você acabou de criar o seu primeiro serviço web em Nodejs.
Esta mensagem aparece porque não definimos nenhuma rota para este endereço e resposta que o servidor tem que dar pro usuário caso esta rota seja requisitada. Entao vamos fazer isso agora.

Vamos fazer uma requisição do tipo GET para retornar uma mensagem motivacional para o usuário que requisitar a rota raiz da nossa aplicação, que é a rota “/”, ou seja http://localhost:3333.

Para isso vamos utilizar o método get do Express, informando a rota e uma função de callback, ou seja, uma função resposta pro usuário.

Vamos lá!!
Na linha 8 a nossa constante está chamando o método get, ou seja, estamos fazer uma requisição para o nosso servidor. Neste método estamos passando dois parâemtros separados por vírgula:
O primeiro que é a barra “/” em formato de string, informa qual a rota que estamos criando. Somente a “/” significa que estamos utilizando a rota raiz, ou seja o http://localhost:3333.
O segundo é uma função de callback onde podemos definir o parâmetros de envio (req) quisermos enviar alguma informação (um formulario por ex.), e resposta (res) que é a resposta dos servidor quando a rota é requisitada (pode ser uma mensagem ou uma pagina html).Neste caso utilizei arrow funcion para criar a função de callback mas você poderia criar a função no modelo vanilla que funcionaria perfeitamente.

Para retornar uma uma mensagem ao usuário utilizamos o return e o parametro res que é o paramentros de resposta, chamando o método send que envia uma resposta em formato de String.

Como fizemos alterações no código do servidor precisamos dar restart na aplicação. No prompt de comando digite CTRL+C e execute node servidor.js
novamente. Digite novamente o endereço http://localhost:333 que equivalente a rota raiz, o “/”.

Vamos ver o resultado:

Muito simples, não?
Agora vamos utilizar a estrutura de dados JSON para retornar o nome de um usuário.
Como estamos enviando uma resposta, novamente vamos utilizar o parâmetro send, porem agora utilizando o método json.

Simplificando, estamos chamando novamente o parâmetro de resposta (res) com o método json que recebe um objeto { } como parâmetro. No objetos adicionamos duas propriedades: nome e profissao.

Mesmo que sejam dados estáticos, ou seja, não estamos pegando nada do banco de dados, os dados do JSON que a API está replicando ja podem ser cosumidos e implementados em outro sistema.

Por enquanto esse JSON só poderá ser consumido por sistemas do mesmo dominio. É uma segurança do proprio express. Para que aplicações externas possam consumir nossa API precisamos instalar uma dependencia chamada cors. Iremos ver isso em outro momento.

Com isso terminamos a nossa parte introdutória sobre API’s. Tente refazer o mesmo projeto sem olhar até fixar o aprendizado.
Bons estudos e até o próximo artigo.