REST api com Node.js (Express e MongoDB)

Thiago Luiz
6 min readAug 6, 2017

--

(Fala galera)

Este é o primeiro artigo que estarei trazendo pra vocês relacionado ao desenvolvimento de aplicações baseadas em Node.js, Express e MongoDB. O artigo consiste na construção de uma aplicação API REST, sua descrição e utilizando boas práticas de programação. Vamos lá?

Obs: Caso você precise de uma api de usuário com autenticação JWT para teste, segue o link do npm e do projeto explicanado o funcionamento da api.

O que saber antes de iniciar?

  • É indispensável o conhecimento da linguagem JavaScript na versão ECMAScript 2015 ou ES6. Confira o link de um excelente estudo sobre a versão.
  • Conhecimento básico em Node.js, Express e MongoDB.

Obs: Presumo que você esteja com o Node.js e o MongoDB instalados em sua máquina. É de suma importância estar com o MongoDB rodando, caso não esteja, abra um aba em seu terminal e digite “mongod”.

Preparando ambiente de desenvolvimento

Nosso primeiro passo a dar será a preparação do nosso ambiente de desenvolvimento instalando todas as dependências necessárias para nosso projeto.

  • Criando diretório: Via terminal crie uma pasta e logo em seguida entre na pasta: “mkdir myFolder && cd myFolder”.
  • Iniciando arquivo package.json: Em seu terminal digite “npm init”.
  • Instalando dependências: Com o nosso package.json inicializado, podemos instalar nossas dependências com o seguinte comando: “npm install express body-parser mongoose node-restful — save”. Não esqueça de salvar usando “traço traço save”.

Implementando servidor Express

Após a preparação do ambiente podemos seguir com a criação do servidor usando Express. Na pasta “myFolder” crie uma pasta “config” que terá todos os arquivos relacionados a configuração do servidor.

Modulo server.js

Dentro da pasta “config” crie um arquivo “server.js” para configuração do servidor.

  • Crie uma constate que irá armazenar o valor da porta.
  • Declaração das dependências: o middleware body-parser faz a interpretação do corpo(BODY) da requisição; express é o nosso framework web;
  • Criando servidor: atribuimos nossa variável “server” a uma instância do express();
  • Adicionando ao nosso servidor dois middlewares: todas as requisições que chegarem em nosso servidor irão passar em sequência pelos middlewares “bodyParser.urlencoded” que faz o parse das requisições via formulário e “bodyParser.json” das requisições via json.
  • Setando porta do nosso servidor e exportando módulo node. Obs: Se ocorrer algum erro relacionado a porta, exclua as linhas de códigos 10 a 12 e adicione “server.listen(port, function(){})” .

Mapeamento ODM do objeto ITEM

O que seria ODM?

É um mapeamento de dados, sendo esses objetos JavaScript. O Mongoose é uma biblioteca que faz a tradução dos dados do Mongodb(documentos) para objetos JavaScript, proporcionando fácil modelagem e consultas dos dados da aplicação.

Modulo database.js

Dentro da pasta “config” crie um arquivo “database.js” que será responsável pela conexão com nosso banco de dados MongoDB.

  • Atribua uma constante ao mongoose: O mongoose é responsável pela conexão com o MongoDB e mapeamento dos objetos. Utilize o module.exports para apontar para o método “mongoose.connect(url)”, método esse que faz a conexão com o banco, indepedente quer seja local ou em nuvem.
mongodb connection

Modulo item.js. Mapeamento entre objeto e documento

Na pasta “myFolder” crie uma pasta “itens” onde estaremos implementando nosso Schema e os serviços relacionados a ele.

  • Na pasta “itens” crie um arquivo “item.js” que será o Schema representando cada item de uma lista. Ex: lápis, caderno, caneta e etc.
  • Declaração das dependências: o node-restful é um pacote que permite a exposição de uma API REST de forma simples.
  • Integração do node-restful com mongoose.
  • Criando e exportando Schema “itemSchema”.

Modulo itemService.js. Criação dos serviços da API (GET, POST, PUT e DELETE)

Na mesma pasta em que foi criado o arquivo “item.js” crie um arquivo “itemService.js” que será responsável pelos métodos da nossa API.

  • Importação do nosso Schema “item.js”.
  • Criando métodos da nossa API REST relacionados ao nosso Schema “itemSchema” do MongoDB.
  • Atualizando resposta dos métodos POST/PUT da API.
  • Exportando schema “item.js” com métodos adicionados.

Criando nossas rotas

As rotas em Node.js nos proporciona a utilização de serviços que retornam conteúdo, ou seja, elas respondem as requisições do cliente (browser) através das URLs.

Modulo routes.js. Expondo serviços através de rotas(urls)

Dentro da pasta “config” crie um arquivo “routes.js”.

  • Declaração de dependência: atribua uma constante ao Express.
  • Atribua uma função ao module.exports recebendo o “service” como parametro.
  • Criando constante “router” que recebe o roteador do Express.
  • Adicionando middleware “router”, ou seja, todas as requisições na url ‘/api’ serão filtradas pelo middleware.
  • Importando modulo “itemService.js” e registrando os serviços da API no registrador de rotas na url ‘/item’.

Modulo loader.js

Na pasta “myFolder” crie um arquivo “loader.js” e importe todos os arquivos relacionados a configuração.

  • Configurações do servidor.
  • Configurações do banco de dados.
  • Requerindo/Chamando método do modulo “routes.js” passando como parâmetro a instância do servidor express do modulo “server.js”.
  • No arquivo package.json altere o campo “scripts” adicionando “start” em seguida o termo “node” e o nome do seu servidor.

Startando o servidor

No terminal digite o comando “npm start” e voilá, agora você tem um API REST em Node.js que se comunica com MongoDB.

Testando a API

Para realização dos teste aconselhasse a utilização do Postman.

Considerações finais

A motivação para a realização deste artigo foi o desejo de divulgar conhecimento para a comunidade de desenvolvedores back-end e aprimoramento do meu conhecimento. Peço desculpas a algum possível equivoco em relação aos assuntos expostos e parabenizo aos que conseguiram terminar a leitura, acredito que será proveitoso para os que leram.

News: Convido você a participar da iniciativa backend-br. Projeto este destinado a integração de interesses de desenvolvedores back-end no Brasil. Sua participação e contribuição é de grande ajuda para crescimento desse projeto.

Ficamos por aqui! Até breve.

--

--

Thiago Luiz

Sr Software Engineer at PicPay with focus in Golang and AWS.