gpt4 book ai didi

jersey - Jersey :给定无效的请求正文时,返回400错误而不是500

转载 作者:行者123 更新时间:2023-12-03 11:55:31 28 4
gpt4 key购买 nike

我正在使用Jersey的集成Jackson处理将传入的JSON转换为POJO,例如:

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response newCustomer( CustomerRepresentation customer)
{
...
}

如果客户端发送带有无效字段的JSON,Jersey当前返回 500 Internal Server Error。相反,我想返回 400 Bad Request,最好是带有一些有意义的细节,以指示哪些字段有误。

关于如何实现这一目标的任何见解? (至少返回通用400而不是完全不合适的500?)

更新:
这是在调用处理程序之前在服务器端生成的异常:
javax.servlet.ServletException: org.codehaus.jackson.map.exc.UnrecognizedPropertyException: 
Unrecognized field "this_isnt_a_known"_field" (Class com.redacted....), not marked as ignorable

最佳答案

通过实现ExceptionMapper来捕获Jackson抛出的UnrecognizedPropertyException并将其映射到400 Bad Request响应,我终于能够解决此问题:

@Provider
public class UnrecognizedPropertyExceptionMapper implements ExceptionMapper<UnrecognizedPropertyException>
{

@Override
public Response toResponse(UnrecognizedPropertyException exception)
{
return Response
.status(Response.Status.BAD_REQUEST)
.entity( "'" + exception.getUnrecognizedPropertyName() + "' is an unrecognized field.")
.type( MediaType.TEXT_PLAIN)
.build();
}

}

关于jersey - Jersey :给定无效的请求正文时,返回400错误而不是500,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9844654/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com