Page cover

9.7.2 - RESTful: Boas Práticas de Estruturação

📂 Estrutura de Pastas para API RESTful

project-root/
├── controllers/      # Lógica das rotas e controle da aplicação
│   └── userController.js
├── models/           # Modelos e regras de negócio (ex: banco de dados)
│   └── userModel.js
├── routes/           # Definição das rotas da API
│   └── userRoutes.js
├── middlewares/      # Middlewares para autenticação, validação, erros, etc.
│   └── authMiddleware.js
├── services/         # Serviços auxiliares ou lógica de negócio mais complexa
│   └── emailService.js
├── utils/            # Funções utilitárias, helpers
│   └── logger.js
├── config/           # Configurações do projeto (ex: banco, variáveis de ambiente)
│   └── dbConfig.js
├── tests/            # Testes automatizados
│   └── user.test.js
├── index.js          # Ponto de entrada da aplicação
├── package.json      # Configurações e dependências do projeto
└── .gitignore        # Arquivos e pastas ignorados pelo git
🤓 Explicação das Pastas na Estrutura da API RESTful
  • controllers/ Contém a lógica que responde às requisições, controla o fluxo entre rotas e serviços. Separa o que a API faz ao receber uma chamada.

  • models/ Representa os dados e regras de negócio, geralmente relacionado ao banco de dados. Mantém a estrutura dos dados e operações básicas.

  • routes/ Define os endpoints da API e qual controller será chamado para cada rota. Mantém a organização das URLs separada da lógica.

  • middlewares/ Código que executa entre a requisição e o controller, usado para autenticação, validação, tratamento de erros, entre outros. Centraliza funcionalidades comuns.

  • services/ Lógica complexa ou funcionalidades auxiliares que não pertencem diretamente às controllers, como envio de e-mails ou integração com APIs externas.

  • utils/ Funções utilitárias e helpers que podem ser usadas em várias partes do projeto, para evitar duplicação de código.

  • config/ Armazena configurações, como conexões de banco, variáveis de ambiente, URLs externas. Facilita manter dados sensíveis e variáveis separadas do código.

  • tests/ Arquivos de testes automatizados que garantem o funcionamento correto da API. Ajuda a evitar regressões e bugs.

  • index.js Ponto de entrada da aplicação, onde o servidor é iniciado e as configurações principais são carregadas.

  • package.json Gerencia dependências, scripts e metadados do projeto. Essencial para rodar e manter o projeto.

  • .gitignore Lista arquivos e pastas que o Git deve ignorar, evitando versionar arquivos desnecessários, como node_modules e arquivos sensíveis.

👉 Essa organização permite:

  • Separação clara de responsabilidades

  • Código fácil de manter e expandir

  • Reuso de lógica em serviços e middlewares

  • Organização para testes e configuração externa

Last updated