... | ... | @@ -3,4 +3,40 @@ |
|
|
|
|
|
# Backend
|
|
|
|
|
|
Esta página centraliza informações sobre o [repositório Backend do projeto Sem Barreiras](https://tools.ages.pucrs.br/sem-barreiras/sembarreiras-backend). |
|
|
\ No newline at end of file |
|
|
Esta página centraliza informações sobre o [repositório Backend do projeto Sem Barreiras](https://tools.ages.pucrs.br/sem-barreiras/sembarreiras-backend).
|
|
|
|
|
|
## Sumário
|
|
|
|
|
|
- [Organização do repositório](#organização-do-repositório)
|
|
|
- [Padrões de código](#padrões-de-código)
|
|
|
- [Nomenclatura](#nomenclatura)
|
|
|
- [Tratamento de exceções](#tratamento-de-exceções)
|
|
|
|
|
|
## Organização do repositório
|
|
|
|
|
|
O projeto Spring Boot do repositório de Backend do projeto está organizado seguindo um padrão _Controller-Service-Repository_, e esse padrão está refletido na organzação de pacotes do projeto. Optou-se por esse padrão pois, ainda que este padrão possa trazer problemas como acoplamento de regras de negócio e tecnologias de ORM (sendo estes problemas que poderiam ser resolvidos com um padrão de arquitetura limpa), ele segmenta o código em camadas visando uma separação de preocupações/responsabilidades (_Separation of concerns_). Além disso, é um padrão fácil de entender para desenvolvedores que não possuem muita experiência com Spring Boot ou com o desenvolvimento de APIs em geral.
|
|
|
|
|
|
Diante disso, os pacotes do projeto estão divididos da forma abaixo:
|
|
|
|
|
|
- :file_folder: `config`: Configurações personalizadas da aplicação (ex.: configuração da conexão com o banco de dados, declaração de Beans).
|
|
|
- :file_folder: `controller`: Expõe pontos de entrada para comunicação com o mundo exterior. Neste projeto, gerencia a API REST da aplicação, incluindo responsabilidades como autenticação e autorização, e delega o processamento de lógica de negócio para a camada de _services_.
|
|
|
- :file_folder: `dto`: Classes utilizadas para transferir dados entre camadas de uma aplicação (não são entidades, são apenas classes que modelam essas informações a serem trafegadas na aplicação).
|
|
|
- :file_folder: `request`: DTOs para dados de entrada das requisições.
|
|
|
- :file_folder: `response`: DTOs para dados de resposta das requisições.
|
|
|
- :file_folder: `exception`: Exceções personalizadas da aplicação.
|
|
|
- :file_folder: `model`: Entidades do negócio.
|
|
|
- :file_folder: `repository`: Encapsula a lógica de acesso ao banco de dados para buscar e persistir dados.
|
|
|
- :file_folder: `impl`: Classes que implementam as interfaces em _repository_.
|
|
|
- :file_folder: `service`: Implementação da lógica de negócio (interfaces). Se necessário buscar ou salvar dados, delega isso para a camada de _repository_.
|
|
|
- :file_folder: `impl`: Classes que implementam as interfaces em _service_.
|
|
|
- :file_folder: `util`: Classes e métodos utilitários (ex.: formatação de datas)
|
|
|
|
|
|
## Padrões de código
|
|
|
|
|
|
### Nomenclatura
|
|
|
|
|
|
TODO
|
|
|
|
|
|
### Tratamento de exceções
|
|
|
|
|
|
TODO |