@Consumes注解抛异常,如何处理
@Consumes annotation throwing Exception, How to Handle
我的服务接受 Json 并为我使用它并将其映射到我的 DTO。
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Path("/service")
@Produces(MediaType.APPLICATION_JSON)
public Response myService(Request requestBody) {
//Stuff
}
但是,如果特定元素为空,我的 DTO 中的某些字段将抛出 JsonMapperException 异常。
由于这是在我实际进入服务之前发生的,我该如何优雅地处理这个异常和 return 一个带有自定义错误代码和消息的 Json?
此外,我如何将一个元素标记为 "Optional" 以便映射器在它为空或缺失时忽略它,但在它非空时将其序列化?
要回答我自己的问题。
抛出异常的原因是因为我试图在我的 DTO 中执行逻辑。如果传入元素为 NULL,则该逻辑将失败。没有简单的方法解决这个问题。
但是,最佳做法要求在 DTO 中执行尽可能少的逻辑。所以我只是将逻辑移至服务的主要方法并在那里进行计算。
问题已解决。
我的服务接受 Json 并为我使用它并将其映射到我的 DTO。
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Path("/service")
@Produces(MediaType.APPLICATION_JSON)
public Response myService(Request requestBody) {
//Stuff
}
但是,如果特定元素为空,我的 DTO 中的某些字段将抛出 JsonMapperException 异常。
由于这是在我实际进入服务之前发生的,我该如何优雅地处理这个异常和 return 一个带有自定义错误代码和消息的 Json?
此外,我如何将一个元素标记为 "Optional" 以便映射器在它为空或缺失时忽略它,但在它非空时将其序列化?
要回答我自己的问题。
抛出异常的原因是因为我试图在我的 DTO 中执行逻辑。如果传入元素为 NULL,则该逻辑将失败。没有简单的方法解决这个问题。
但是,最佳做法要求在 DTO 中执行尽可能少的逻辑。所以我只是将逻辑移至服务的主要方法并在那里进行计算。
问题已解决。