Utilizando rotas no Node.js

Utilizando rotas no Node.js

Durante o desenvolvimento de uma aplicação web robusta é natural que em algum momento tantas funcionalidades existam que sem uma boa organização tudo será dominado pelo caos.

Imagine que você tenha dez endereços e que cada um deles tenha os métodos POST, GET, PUT e DELETE. Ao todo, serão quarenta métodos organizados de maneira sequencial (um abaixo do outro) em um único documento, tornando tudo longo, extenso e difícil de se localizar alguma coisa.

Pensando nisso, trazemos neste artigo uma ótima forma de utilizar o Node.js de forma organizada e bem estruturada por meio da função Router.

Mas afinal, o que é o Node.js?

O Node é um interpretador da linguagem JavaScript, criado a partir de um outro chamado V8. Com o passar dos anos foi se tornando cada vez mais utilizado porque suporta o JavaScript tanto no lado cliente quanto do lado servidor, além de ser de fácil compreensão. Hoje, é utilizado por diversas empresas como Paypal, Amazon e Netflix.

Durante o desenvolvimento neste artigo, utilizaremos o sistema de módulos CommonJs, mas não se atenha apenas a esta maneira de exportar e importar módulos, uma vez que a partir da versão 14 o Node começou a oferecer suporte para o ECMAScript 6.

Instalando o Node

É importante destacar que o Node deve estar instalado em sua máquina para que você possa desenvolver utilizando a ferramenta. Caso o seu sistema operacional seja o Mac ou Windows, navegue até o endereço, realize o download da versão LTS (versão mais atual e estável do Node.js) e efetue a instalação executando o arquivo baixado. Se você utiliza alguma versão do Linux, digite as seguintes linhas de comando no seu terminal:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

nvm install lts/*

Se a instalação do Node foi concluída corretamente para qualquer um dos casos citados, ao executarmos o comando abaixo receberemos como informação no nosso terminal a versão do Node instalada:

node --version

Primeiros passos

Vamos iniciar o nosso projeto criando um diretório onde criaremos o arquivo package.json e instalaremos o Express (framework para organização de requisições e respostas) e o Nodemon ( framework que evita a necessidade de reiniciar o servidor toda vez que fizermos alguma alteração nos arquivos do projeto). Para isto, basta executar os seguintes comandos em um terminal iniciado na pasta raíz do projeto:

npm init -y

npm install express

npm install nodemon

Também criaremos uma pasta src e um arquivo server.js dentro dela: neste arquivo teremos a estrutura principal do nosso servidor. Além disso, realizaremos algumas alterações no arquivo package.json. Além de criar uma descrição para o projeto no campo description, indicaremos no campo main que nosso arquivo principal se encontra na pasta src e se chama server.js. Por fim, criaremos um script dev que utilizará o nodemon para executar o arquivo server.js que criamos:

Figura 1 - Primeiros passos configurando a nossa aplicação.

Como já foi mencionado, no arquivo server.js faremos a estrutura básica para a execução de um servidor Node: importaremos e executaremos o Express, utilizaremos a função listen para atrelar nossa aplicação a uma porta e criaremos um método get para testar se nosso servidor está funcionando corretamente.

Figura 2 - Implementação básica para o funcionamento de um servidor Node.js.

Se tudo der certo, ao executar o comando npm run dev em um terminal aberto na pasta raíz do projeto, será exibido no endereço http://localhost:3333 do seu navegador um JSON no modelo {"message":"Hello World"}. Além disso, teremos a seguinte configuração no terminal em que executamos o script:

Figura 3 - Servidor em execução.


Realizadas todas estas etapas, vamos começar a realizar a nossa implementação utilizando o conceito de rotas para o Node.js!

Criando Rotas para a aplicação

Imagine que tenhamos que criar uma aplicação em que o usuário possa ter diversas funcionalidades, sendo algumas delas verificar e alterar usuários cadastrados e atualizar suas próprias informações. Se formos utilizar o modelo CRUD para cada uma destas funcionalidades (Create, Read, Update e Delete), teremos oito métodos sendo criados no arquivo server.js (para cada uma destas funcionalidades teremos os verbos GET, POST, PUT e DELETE).

Que tal ao invés disso criarmos uma rota para cada uma destas funcionalidades citadas? Além de dividir cada implementação por arquivo, também evitamos o acúmulo de funções em um único lugar, tornando o código mais limpo e de fácil compreensão. A primeira coisa a se fazer é criar uma pasta específica para colocar as rotas e, dentro dessa pasta, criar os arquivos users.js e profile.js.

Figura 4 - Criação da pasta routes e dos arquivos users.js e profile.js.

Uma vez criados estes arquivos, importaremos e executaremos o Express neles assim como fizemos no arquivo server.js, com uma ligeira mudança: ao invés de executar a função express, executaremos a função express.Router, que possui todas as funcionalidades necessárias para utilizarmos rotas com o Node.js. Não esqueça de exportar a função em cada rota com o uso do module.exports:

Figura 5 - Criando rotas com a função express.Router.

Agora está na hora de informar ao nosso arquivo principal server.js que temos rotas que serão utilizadas na nossa aplicação. Para isto, devemos importar cada uma das rotas em server.js e utilizar a função use para cada uma delas. Esta função recebe como parâmetro o endereço e a rota que iremos utilizar:

Figura 6 - Importando as rotas criadas no arquivo principal server.js.

A partir de agora já podemos criar todos os métodos necessários para cada uma das rotas em seus respectivos arquivos criados, sem ter medo de não dar certo:

Figura 7 - Métodos GET, POST, PUT e DELETE para a rota users.

💡
OBS - As funções returnAllUsers, updateUser, deleteUser e newUser fazem consultas e alterações no banco de dados, de acordo com o método utilizado. Como nosso foco é explicar especificamente sobre como criar rotas com o Node.js, não nos aprofundaremos nestas funcionalidades hoje.

Note que para cada um dos métodos não foi necessário repetir o endereço /users que atribuímos a esta rota no arquivo principal server.js. Isto acontece porque quando importamos e implementamos uma rota no arquivo principal (como fizemos no trecho app.use(‘/users’, users) na linha 13 do arquivo server.js), todos endereços que forem criados dentro do arquivo passarão a reconhecer o endereço raíz (‘ / ’) como o especificado lá (/users). Incrível, não acha?

Considerações Finais

Por meio deste artigo vimos toda a estrutura necessária para que seja realizada a implementação de rotas dentro do Node.js. Agora você já pode criar projetos robustos e devidamente organizados, com rotas bem estruturadas e arquivos que só possuem informações que competem a determinada funcionalidade da aplicação. Bons estudos e boa implementação!

💡
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.