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:
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.
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:
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.
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:
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:
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:
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!
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.