Criando uma API RESTful utilizando Node.js, Express.js e Mongoose

Criando uma API RESTful utilizando Node.js, Express.js e Mongoose

Uma API RESTful é um conjunto de ferramentas, rotinas e protocolos que são utilizados para construir aplicações que expõem serviços a outras aplicações, permitindo assim que diferentes sistemas troquem dados e se comuniquem de forma padronizada e organizada.

O que é o Node.js?

O Node.js é uma plataforma de desenvolvimento de aplicações que são baseadas em JavaScript. Ele é baseado em uma arquitetura de eventos que são assíncronos, tornando mais eficiente para lidar com as ações em tempo real.

O que é o Express.js?

O Express.js é um framework rápido e um dos mais utilizados com o Node.js. Facilitando no desenvolvimento de aplicações back-end e até mesmo, em conjunto com aplicações full-stack.

O Express.js fornece uma série de funcionalidades e recursos para criação de rotas, lidar com respostas e requisições, tratamento de erros, dentre outros.

O que é o Mongoose?

O Mongoose é uma biblioteca de modelagem de dados ou ODM para MongoDB e Node.js. Ele realiza o gerenciamento do relacionamento entre os dados, e permite que você crie esquemas e modelos para os dados de sua aplicação e realize operações CRUD (criação, leitura, atualização e exclusão) de forma bem fácil e intuitiva.

Neste artigo vamos aprender os primeiros passos para criação de uma API RESTful utilizando Node.js, Express.js e Mongoose. Primeiro iremos realizar a instalação e a configuração do ambiente de desenvolvimento, depois iremos criar as rotas e os modelos para a nossa aplicação.

Criando o projeto

Para começar, abra o seu terminal e escreva o comando:



Após a utilização do comando acima, você será perguntado sobre algumas informações sobre o projeto, como o nome, a versão e a descrição dele. Caso ache necessário, você poderá preencher os campos ou apenas pressionar Enter para que sejam utilizados os valores padrão. Quando finalizar, será criado um arquivo package.json na pasta do projeto com as informações fornecidas.

Ao final do processo, aparecerá o seguinte em seu terminal:


Após esse passo concluído, iremos instalar as dependências do projeto.

Para isso, utilize o comando:


para instalar o Express.js e o Mongoose.

Após a instalação, você terá a seguinte mensagem no seu terminal:


Esse comando também criará uma pasta node_modules com os módulos instalados e também irá adicionar as dependências ao arquivo package.json. Ficando da seguinte forma:


Criando o servidor

Com o projeto já criado e as dependências necessárias instaladas, vamos criar o principal arquivo da nossa aplicação. Vamos chamá-lo de server.js. Depois de criado o arquivo, vamos importar o Express.js e o Mongoose e configurar o servidor.

No início do arquivo, escreva o seguinte código:


O código acima irá fazer a importação do Express.js e do Mongoose, também irá criar uma instância do Express chamada app. Também foi definida uma variável port com o número da porta que o servidor irá ser executado.

O próximo passo será configurarmos o Mongoose para se conectar ao banco de dados. Para isso, iremos adicionar o seguinte código logo abaixo do anterior:


O código acima irá utilizar a função connect do Mongoose para se conectar ao banco de dados. No primeiro parâmetro da função, iremos passar a URL de conexão do MongoDB, no segundo parâmetro iremos passar algumas opções para configurar a conexão.

Em seguida, criaremos uma variável db que representará a conexão com o banco de dados. Utilizamos o método on para registrar um “ouvinte” de eventos de erro e o método once para registrar um “ouvinte” de eventos para o caso de sucesso. Caso a conexão seja bem-sucedida, será retornada a mensagem “Conexão estabelecida com sucesso!” em seu terminal.

O nosso próximo passo, será configurar o Express.js para que possa receber as requisições HTTP e retornar as respostas. Abaixo do código anterior, adicione o seguinte código:


O código acima irá habilitar o middleware de suporte a JSON do Express.js. Isso irá permitir que o servidor receba e envie dados no formato JSON. Em seguida foi criada uma rota GET para a raiz da aplicação, essa rota irá retornar a mensagem “API funcionando corretamente!”. E ao final, utilizamos o método listen do Express.js para o servidor ser iniciado na porta especificada.

Após salvar o arquivo server.js, execute o comando:


No seu terminal, para iniciar o servidor. Caso tudo esteja configurado de forma correta, você receberá uma mensagem de retorno: “Servidor iniciado na porta 3000” em seu terminal, como demonstrado abaixo.


Testando a API

Para testarmos se a API está funcionando corretamente, usaremos o Postman. Em um breve resumo, o Postman é uma ferramenta importante e que nos auxilia a construir, consumir, testar, documentar e compartilhar APIs. Além disso, o Postman permite que os usuários salvem e recuperem as respostas de forma detalhada, das suas requisições HTTP e HTTPs.

Para testarmos se tudo está rodando devidamente, iremos abrir o Postman e criar uma nova solicitação GET para a URL http://localhost:3000 e clicar em “Enviar”. Caso tudo esteja funcionando corretamente, você receberá a resposta “API funcionando corretamente!”.

Ficando da seguinte forma:

Criando os modelos

Após o servidor configurado e funcionando, vamos criar os modelos para os dados da nossa aplicação. Os modelos são esquemas que definem o formato dos documentos que serão armazenados no banco de dados.

Iremos criar um modelo para uma coleção de produtos. Na pasta do projeto, crie um novo arquivo chamado product.js e adicione o código abaixo:


No código mostrado, foi criado um esquema chamado productSchema utilizando o construtor Schema do Mongoose. Foram definidos os campos name, price e description como strings e o campo creadetAt como data e colocamos que os campos name e price sejam obrigatórios. Em seguida criamos um modelo chamado Product, utilizando o método model do Mongoose e passado o Schema como parâmetro. Por último, fizemos a exportação do modelo para que possa ser utilizado em outros arquivos.

Criando as rotas

Após termos criado o modelo, iremos criar as rotas da nossa API. As rotas são os endpoints da API que permitem acessar os recursos que a aplicação possui. Como citado anteriormente, criaremos rotas para as operações de CRUD (Create, Read, Update e Delete) de produtos.

Para criação das rotas, iremos adicionar o seguinte código no final do arquivo server.js:

A primeira rota será a de listar todos os produtos:

  • GET/products:

A segunda rota será a de exibir um produto específico:

  • GET/products/:id:

Nossa próxima rota será a de criar um novo produto:

  • POST/products:



A próxima será a de atualizar um produto já existente:

  • PUT/products/:id:


E por último, teremos a rota de excluir um produto:

  • DELETE/products/:id:


No código acima, criamos 5 rotas para a coleção de produtos. Cada rota utiliza os métodos do próprio Mongoose para realizar as operações de CRUD. Por exemplo, a rota GET/products utiliza o método find, já a GET/products/:id utiliza o método findById, a POST/products utiliza o método save para criar um novo produto e no banco de dados e assim cada rota terá seu método específico para realizar uma alteração no banco de dados.

Testando as rotas

Agora que as rotas já estão criadas, iremos voltar ao Postman para testá-las. No Postman, crie uma nova solicitação POST para a URL http://localhost:3000/products e adicione um corpo JSON com os dados referentes ao produto. Por exemplo:


Clique em “Enviar” e verifique se o produto foi adicionado ao seu banco de dados com sucesso. Em seguida, você poderá criar uma nova solicitação GET para a URL http://localhost:3000/products para conseguir listar todos os produtos. Tendo em vista a solicitação de adição do produto feita anteriormente, verifique se o seu produto criado anteriormente se encontra na lista.

Você também poderá testar as outras rotas existentes da mesma forma, caso queira atualizar um produto, crie um endpoint PUT para a URL http://localhost:3000/products/<id do produto> e adicione um corpo JSON com os dados que deseja que sejam atualizados.

Conclusão

Neste artigo, aprendemos o básico para criar uma API RESTful usando o Node.js. Express.js e Mongoose. Também instalamos e configuramos o ambiente para o desenvolvimento, criamos o servidor, as rotas e os modelos da aplicação, testando os endpoints com o Postman.

Algumas sugestões para que você possa expandir sua API são:

  • Adicionar uma validação para os dados e um tratamento de erros mais bem feito;
  • Utilização do MongoDB Atlas ou algum serviço em nuvem no lugar de usar um banco de dados local;
  • Adicionar autorização e autenticação para uma melhor proteção de suas rotas;
  • Criação de mais modelos e mais rotas para ter uma aplicação mais completa;
  • Estruturar melhor o banco de dados com filtragens e paginações para evitar lentidão por carregar grandes quantidades de dados de uma vez.

Em breve trarei novos artigos falando sobre o MongoDB e suas aplicações, como também artigos sobre banco de dados SQL e assuntos relacionados a parte de back-end, como também em aplicações full-stack.

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.