我想为无法识别的字段和请求正文的其他错误设置自定义错误消息。我尝试了 ExceptionMapper 但它不起作用:/使用 quarkus 和 Jackson
public class ReqDTO {
    private String a;
}
发送请求时:
{
    "a": "a"
}
它看起来不错。但是发送时:
{
    "a": "a",
    "b": "b"
}
有错误响应:
Unrecognized field "b"; (class ReqDTO), not marked as ignorable
想要自定义此消息和其他错误的 json 正文(如太多字段)以拥有“BAD_JSON_SCHEMA”等消息。
尝试过
@Provider
public class ExHandler implements ExceptionMapper<JsonMappingException>{
    public Respone toResponse(JsonMappingException e) { 
        //response bad field impl
    }
}
但它不起作用。看起来像 json 处理异常更快。尝试使用“Exception”、“JsonParseException”但没有任何改变:/
@Path("/")
public class Controller {
    @Post
    @Consume(APPLICATION_JSON)
    @Produces(TEXT_PLAIN)
    public Response getA(@Valid ReqDTO reqDTO){
        //logic
    }
}
@编辑
找到类似 DeserializationProblemHandler 的东西,但不知道如何更改 handleUnknownProperty 的消息:/
@Singleton
RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
    public void customize(ObjectMapper mapper){
        mapper.addHandler(new DeserializationProblemHandler(){
            @SneakyThrows
            @Override
            public boolean handleUnknownProperty(...... params){
                throw new ApplicationException("ERRO_BODY_MESS");
            }
        }
    }
}
@Provider
public class ExHandler implements ExceptionMapper<ApplicationException>{
    public Respone toResponse(ApplicationException ex) { 
        return Response.status(BAD_REQUEST).entity(ex.getMessage()).build();
    }
}
| 归档时间: | 
 | 
| 查看次数: | 1169 次 | 
| 最近记录: |