Os exemplos, demonstrados em aula, cobrem os erros 404 para solicitações de registros que não constão na base.
Como no exemplo da solicitação do método GET abaixo.
http://localhost:8080/topicos/999
Porém se enviarmos a solicitação com letra ocorre um erro que é retornado ao usuário. Como no exemplo.
http://localhost:8080/topicos/aaa
Esse erro ocorre pois o endpoint espera um número no parâmetro e enviamos letras, gerando assim uma excessão. Fiz uma implementação de melhoria, conforme abaixo, e gostaria de receber duas sugestões sobre o tema, sendo:
--> Há uma forma mais inteligente de fazê-lo utilizando @RestControllerAdvice já que essa anotação captura as excessões que ocorrem no @RestController?
--> Como vocês implementariam essa melhoria sem utillizar o @RestCoontrollerAdvice pois oque me incomodou na implementação que fiz foi o fato de repetir "return ResponseEntity.notFound().build(); " no try e no cach ? Se bem que essa opção poderia ser uma vantagem caso queira enviar mensagem personalizada sobre a sintaxe esperada na URI.
@GetMapping("/{id}")
public ResponseEntity<DetalhesTopicoDto> detalhar(@PathVariable String id) {
try {
Optional<Topico> topico = topicoRepository.findById(Long.valueOf(id));
if(topico.isPresent()) {
return ResponseEntity.ok(new DetalhesTopicoDto(topico.get()));
}
return ResponseEntity.notFound().build();
} catch (Exception e) {
return ResponseEntity.notFound().build();
}
}