Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Resolver Exception não tratada na response

Boa Tarde, estou com uma situação onde está sendo tratada a exception, mas no momento do retorno ela não retorna a response nem o HTTP Status Code definido, retornando 403 Forbidden ao invés do Status Code mapeado.

Exception logs:

org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation ... com.br.med.voll.api.exception.InexistentEntityException: Paciente Inexistente na Base de Dados!

Debug do erro capturado no ControllerAdvice: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Meu método de Exception onde o debug foi realizado:

    @ExceptionHandler({InexistentEntityException.class, DataIntegrityViolationException.class})
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public ResponseEntity badRequest(Exception e){
        ErrorHandlerDTO errorHandlerDTO = new ErrorHandlerDTO(HttpStatus.BAD_REQUEST, e);
        return ResponseEntity.badRequest().body(errorHandlerDTO);
    }

A Controller:

@RestController
@RequestMapping("consults")
public class ConsultController {

    @Autowired
    private ConsultServiceImpl consultService;

    @PostMapping
    public ResponseEntity schedule(
            @RequestBody
            @Valid
            ConsultScheduleRequestDTO consultScheduleRequestDTO,
            UriComponentsBuilder uriComponentsBuilder
    ){
        ConsultScheduleResponseDTO responseDTO = consultService.schedule(consultScheduleRequestDTO);
        URI uri = uriComponentsBuilder.path("/consults/{consult_id}").buildAndExpand(responseDTO.consultId()).toUri();
        return ResponseEntity.created(uri).body(responseDTO);
    }
}
2 respostas

Oi Rafael!

Tem um Para Saber Mais falando sobre como tratar outros tipos de erros que não foram mostrados ao longo dos cursos: https://cursos.alura.com.br/course/spring-boot-aplique-boas-praticas-proteja-api-rest/task/125341

solução!

Oi Rodrigo, descobri o erro. Aparentemente era a minha DTO de Erro que estava sem as anoteções de Getter e Construtores.. Então o Spring não conseguia converter para JSON.. Isso causou o HttpMediaTypeNotAcceptableException: No acceptable representation, mesmo já detectando meu erro dentro do ControllerAdvice.