Como criar uma API REST utilizando ExpressJS

É muito importante que um desenvolvedor saiba no mínimo a base da criação de uma API, hoje mostrarei passo a passo como criar uma API REST utilizando ExpressJS.

Ter uma API bem estruturada e de código limpo é muito importante para a manutenção e adição de novas features, principalmente quando se tem um sistema de grande escalabilidade.

Para criarmos a nossa API temos que ter primeiramente é necessário ter o node instalado na sua máquina e o npm. Caso não tenha instalado basta clicar aqui.

Após instalado verifique se tudo ocorreu corretamente na instalação

npm -v
node -v

Iniciando o projeto

Crie uma pasta para seu projeto e coloque o nome de sua preferência, colocarei nesse exemplo o nome de api. Entre na pasta e inicie o projeto.

npm init -y

Quando você faz isso, o sistema cria um arquivo chamado package.json, que contém as configurações e dependências do projeto. Agora instalaremos o ExpressJS.

npm install express

Caso queira instalar o nodemon fique à vontade. Essa biblioteca funciona para reiniciar o servidor node a cada alteração feita no código.

npm install -–save-dev nodemon 

Utilizamos o – -save-dev pois essa dependência estará apenas no ambiente de desenvolvimento.

Após isso vamos cria um arquivo chamado server.js e iremos importar nosso Express e criar um instancia. Definiremos em seguida a porta que o servidor irá rodar, o process.env.PORT pega o valor da variável de ambiente, muito útil em situações que esteja rodando em produção pois ele pegará o valor dinamicamente, caso não esteja em produção ele pegará o valor 3000 que é porta local.

const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;

Depois colocaremos nosso Middleware para converter o corpo das requisições HTTP em JSON.

app.use(express.json());

Agora vamos iniciar o servidor para que ele fique escutando as requisições HTTP. E no nosso callback iremos adicionar um console.log para saber que o servidor foi iniciado.

app.listen(PORT, () => {
  console.log (`Servidor rodando na porta ${PORT}`);
});

Para facilitar a execução, colocaremos um script lá no arquivo package.json.

"scripts": {
  "start": "node server.js",
  "dev": "nodemon server.js"
}

Executaremos o comando para iniciar o servidor.

npm run dev

Caso tenha ocorrido tudo corretamente ficará igual na imagem abaixo:

Servidor node rodando

Agora vamos definir nossas rotas.

Rota GET

Criaremos uma pasta chamada routes e dentro dela o arquivo users.js. Nesse arquivo criaremos as rotas GET e POST. Posteriormente você pode criar em arquivos separados que é a melhor prática pois ajuda na manutenção e legibilidade do código, porém aqui iremos colocar tudo em apenas um único arquivo.

Primeiramente temos que importar nosso Express e o router pois através dele será possível criar as rotas.

const express = require('express');
const router = express.Router();

Como não estamos utilizando nenhum banco de dados para armazenar os dados, criarei uma variável local do tipo Array para simular os dados sendo armazenados.

let usuarios = [];

Vamos criar nossa primeira rota que será o GET. É a rota mais fácil pois trará todos os dados. No primeiro parâmetro colocaremos o caminho e no segundo será um callback com dois parâmetros, um é a requisição o outro a resposta. Dentro do callback é feita a conversão de dados para JSON, no nosso caso o Array.

router.get('/', (req, res) => {
  res.json(usuarios);
});

Rota POST

Usaremos o POST como a outra rota para criar um dado, em nosso caso para criar um usuário. Seguimos a mesma lógica do GET, mudando apenas a nomenclatura para POST. Em seguida, pegaremos o valor que enviamos via requisição HTTP e colocaremos em uma variável local nomeada como novoUsuario. Fiz uma validação de dados informando a obrigatoriedade dos campos, fique à vontade para modificar. Logo após vamos popular nosso array usuários para quando tiver a requisição do GET, ter valores disponíveis a serem mostrados. E por fim adicionaremos uma mensagem de confirmação e o usuário que foi adicionado.

router.post('/', (req, res) => {
  const novoUsuario = req.body;
  if (!novoUsuario.nome || !novoUsuario.email || !novoUsuario.idade) {
    return res.status(400).json({ message: 'Todos os campos são obrigatórios!' });
  }
  usuarios.push(novoUsuario);
  res.json({ message: 'Usuário adicionado com sucesso', novoUsuario });
});

No fim do arquivo, exportaremos nosso router para utilizá-lo em outro canto, como no arquivo server.js.

Após todas as rotas criadas modificaremos nosso arquivo server.js para importar nosso users.js e para definirmos as rotas, o arquivo completo abaixo.

//users.js
const express = require('express');
const app = express();
const userRoutes = require('./routes/users');  // Importação do arquivo users

const PORT = process.env.PORT || 3000;
app.use(express.json());
app.use('/api/users', userRoutes); // Definição de rotas
app.listen(PORT, () => {
  console.log(`Servidor rodando na porta ${PORT}`);
});

Depois de tudo configurado corretamente podemos utilizar o postman para realizar testes. A primeira chamada do GET ele retornara um Array vazio. Caso não tenha o Postman basta clicar aqui para baixar.

POSTAMAN

Para efetuar uma requisição POST siga os passos abaixo:

  1. Selecione o método POST e insira os endpoint;
  2. Vá na aba body;
  3. Selecione a opção raw;
  4. Altere o método de inserção de dados de Text para JSON;
  5. Agora só informa os dados.
{
  "nome": "Front Master",
  "email": "[email protected]",
  "idade": 25
}
método post utilizando o expressjs

Para efetuar um método GET basta alterar na lateral esquerda onde se coloca o endpoint para GET.

método get utilizando o expressjs
get

Após todos esses passos é para sua API está funcionando corretamente, em outro momento irei mostrar como fazer a integração com o mongoDB, pois nesse nosso exemplo estou salvado os dados do POST apenas em uma variável local. Hoje mostrei como criar uma API REST utilizando ExpressJS.

Referências: Express – Node.js