当我缺少参数时,为什么要回复404而不是验证消息

时间:2015-04-03 09:53:59

标签: jersey

@Path("report/v1")
public class ReportService {

    @Path("report")
    @GET
    @Produces("application/json")
    public ReportResponse report(@NotNull @QueryParam("startDate") String startDate,
                                    @NotNull @QueryParam("endDate") String endDate,
                                    @NotNull(message = "{param.invalid.periodType}") @QueryParam("periodType") String periodType) {
        PublisherResponse res = new PublisherResponse();

我打电话给下面的方法..

http://localhost:8080/report/v1/report?startDate=20140101&endDate=20140505

我期望验证错误,因为缺少了periodType。但返回404。

我该如何解决?

1 个答案:

答案 0 :(得分:1)

我会做出一些假设。

  • 假设1:您正在使用泽西2.x Bean Validation support
  • 假设2:您实际上收到400错误请求,而不是404未找到

验证功能的默认行为是发送400 Bad Request(不会映射到响应)。如果我们希望Jersey发送验证错误响应,我们需要将以下属性设置为true

property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, true);

Configuring Bean Validation Support

了解详情