Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • H Hopeful Wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Gestao de Planos de Contingencia em Desastres
  • Hopeful Wiki
  • Wiki
  • backend

Last edited by Lucca Zen Mazzoccato Sep 15, 2025
Page history
This is an old version of this page. You can view the most recent version or browse the history.

backend

📑 Padrões de Desenvolvimento – Backend

Esta página visa apresentar os padrões a serem utilizados no desenvolvimento de código do repositório do Backend da aplicação.

Sumário

  1. Swagger
  2. 📌 DTOs
  3. Estrutura de Exceções

Swagger

Além de seguir os padrões determinados pela arquitetura e estrutura de pastas do projeto, é necessário atualizar a estrutura do Swagger conforme é realizado o desenvolvimento da aplicação.

As marcações do Swagger devem ser inseridas em:

  • Controllers
  • Models
  • DTOs

📌 DTOs

  • Todos os DTOs devem ser criados na pasta dto do seu modulo.
  • Para a criação dos DTOs usamos a anotação @Valid para validar o tipo de um atributo .
  • Utilizar o Bean Validation do Spring para validação automática de atributos.
  • As anotações de validação devem ser aplicadas diretamente nos atributos do DTO.

Exemplo:

public class UsuarioDTO {

    @NotBlank(message = "O nome é obrigatório")
    private String nome;

    @Email(message = "E-mail deve ser válido")
    private String email;

    @NotNull(message = "A idade é obrigatória")
    @Min(value = 18, message = "Idade mínima é 18 anos")
    private Integer idade;
}

Na Controller:

@PostMapping
public ResponseEntity<UsuarioDTO> salvar(@RequestBody @Valid UsuarioDTO usuarioDTO) {
    return ResponseEntity.ok(service.salvar(usuarioDTO));
}

Estrutura de Exceções

  • exception/HttpException.java → classe base
  • exception/NotFoundException.java → exemplo de exceção específica
  • config/GlobalExceptionHandler.java → handler global

Handler Global: GlobalExceptionHandler

  • O handler global (GlobalExceptionHandler) captura todas as exceções e retorna respostas padronizadas:
  • HttpException → retorna a mensagem e o status HTTP definido na exceção
  • Exception → erros genéricos retornam 500 com mensagem padrão
  • MethodArgumentNotValidException → validação de DTOs retorna 400 BAD_REQUEST com detalhes de cada campo
  • IllegalArgumentException → retorna 400 BAD_REQUEST com mensagem da exceção

1. Criando Exceções

Todas as exceções personalizadas devem estender HttpException.

public class NotFoundException extends HttpException {
    public NotFoundException(String message) {
        super(message, HttpStatus.NOT_FOUND);
    }
}

```java
@GetMapping("/usuarios/{id}")
public Usuario getUsuario(@PathVariable Long id) {
    return usuarioRepository.findById(id)
            .orElseThrow(() -> new NotFoundException("Usuário não encontrado"));
}

Retorno :


{
  "message": "Usuário não encontrado",
  "status": "NOT_FOUND"
}

Boas Práticas de Exceções

  • Sempre criar exceções específicas estendendo HttpException.
  • Usar mensagens claras e descritivas.
  • Não lançar RuntimeException direto; use suas exceções customizadas.
  • Validações de DTO são tratadas automaticamente (@Valid).
  • Não manipular a resposta JSON de erro manualmente; o handler global cuida disso.
Clone repository
  • Arquitetura
  • Banco de Dados
  • Frontend
  • backend
  • configuracao
  • design_mockups
  • escopo
  • Home
  • processo