Criando uma api node.js na estrutura: Models — Services — Controllers — Routers
Criando uma api node.js na estrutura: Models — Services — Controllers — Routers

Criando uma api node.js na estrutura: Models — Services — Controllers — Routers

Partiu conversar um pouco sobre estrutura de projetos Node.js?

Rodrigo Zandonadi
Code & Write
Published in
3 min readOct 29, 2021

--

Hello friend devs!

Criar uma aplicação, ou uma api em Node.js não é complexo. Temos frameworks como o Express e o Hapi que nos ajudam a estruturar nossos projetos de forma eficaz.

O grande dilema, quando se está iniciando os estudos é: qual arquitetura utilizar?

Eu fiz alguns cursos de Node.js, vários tutoriais e conversei com alguns devs que utilizam o Node, em produção ou para estudos. Ninguém é capaz de chegar a um consenso. E isso é algo que me atrai no Node. Você é livre para estabelecer sua própria estrutura.

Alguns frameworks engessam o desenvolvimento determinando a estrutura que você irá utilizar. Por outro lado isso também é bom, já que sabe que, sempre que for trabalhar naquele framework, utilizará uma configuração pré-estabelecida.

Influenciadores de decisão

Essa é uma questão pessoal, creio, influenciada por fatores como equipe, conhecimento técnico e tipo de projeto no qual se está trabalhando.

Então, como definir a estrutura ideal para um projeto Node.js?

Podemos ampliar essa conversa, seja nos comentários ou em futuros artigos. Vou apresentar aqui o que tenho utilizado. Tenho gostado dessa estrutura e tenho visto que ela atende a maioria dos projetos nos quais trabalho.

Models — Services — Controllers — Routers

Minhas apis Node.js têm seguido a estrutura abaixo:

Isso é o que tenho usado e tem me servido bem. Mas sei que muitos casos exigirão mudanças, como a estrutura em que estou trabalhando no momento.

É um microserviço que é acessado por outros microserviços através de uma API Gateway. Nesse caso, meu microserviço precisou ser reestruturado, de acordo com as necessidades do projeto seguir um padrão.

Estrutura usada em um microserviço

Mesmo com uma nova estrutura, mantive arquitetura MSCR, pois, ao meu ver, separa melhor a lógica do projeto em suas respesctivas funções.

Exemplo: listagem de usuário

Peguemos como exemplo um endpoint de listagem de usuários. Em outras arquiteturas, o controller, ou o router, ficariam sobrecarregados de código, fazendo chamadas ao banco de dados, tratando erros e retornando as devidas respostas às solicitações.

Os exemplos que usarei utilizam ES6. Se você não sabe como usar ES6 no Node.js, dá uma lida nesse artigo:

Pensando na arquitetura MSCR, divido o código da seguinte maneira:

user.model.js

user.service.js

user.controller.js

user.router.js

Conclusão

Se acharem interessante, gostaria de saber como vocês costumam trabalhar a estrutura dos seus projetos. Principalmente na questão da arquitetura escolhida.

Algumas coisas ainda são confusas para mim. A definição correta dos diretórios helpers, config e midleware muda muito de um tutorial para outro, de projeto para projeto. Então, por enquanto, deixo essa parte assim: arquivos de configuração na pasta config, e demais arquivos na pasta helpers.

Espero que esse artigo possa ajudar alguém. E que a partir dele, eu encontre com vocês novas soluções/explicações para dúvidas que tenho.

Abraço galera, vejo vocês nos comentários.

--

--

Rodrigo Zandonadi
Code & Write

Desenvolvedor front end apaixonado por, CSS/SASS, JavaScript/Node.js (MEAN, MERN e MEVN).