Class UnifiedErrorResponseProcessor
- All Implemented Interfaces:
io.micronaut.http.server.exceptions.response.ErrorResponseProcessor<ProblemDetail>
ProblemDetail,
application/problem+json), substituindo o HateoasErrorResponseProcessor default
(que emitia {message, _links, _embedded}). É o padrão de erro da casa.
Atua no ponto único por onde o Micronaut renderiza erros gerados pelo framework:
HttpStatusException (e a hierarquia de exceção desta lib), falhas de validação
(Bean Validation), 404 de rota e erros de parse de corpo.
Honra a taxonomia de domínio da causa-raiz. Lê context.getRootCause(): quando a
exceção é uma PortadoraDeProblema, carimba o code de máquina e o title de
tipo que ela carrega; na ausência, cai no genérico (code = status.name(),
title = status.getReason()) — byte-idêntico ao comportamento anterior. O title é
do tipo do problema (estável, RFC 9457 §3.1.4); o específico da ocorrência fica no detail.
Falha de Bean Validation (ConstraintViolationException) recebe code uniforme
(status.name(), ex. BAD_REQUEST — o mesmo de BadRequestException, para o
consumidor não distinguir borda×service) mais a lista de campos rejeitados em invalid-params.
Ordem de decisão: portadora → validação → genérico.
O status HTTP já vem definido na resposta quando este processor roda — apenas formatamos o corpo, sem alterar o status (preserva os contratos testados de cada app).
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionio.micronaut.http.MutableHttpResponse<ProblemDetail> processResponse(io.micronaut.http.server.exceptions.response.ErrorContext context, io.micronaut.http.MutableHttpResponse<?> response)
-
Constructor Details
-
UnifiedErrorResponseProcessor
public UnifiedErrorResponseProcessor()
-
-
Method Details
-
processResponse
public io.micronaut.http.MutableHttpResponse<ProblemDetail> processResponse(io.micronaut.http.server.exceptions.response.ErrorContext context, io.micronaut.http.MutableHttpResponse<?> response) - Specified by:
processResponsein interfaceio.micronaut.http.server.exceptions.response.ErrorResponseProcessor<ProblemDetail>
-