【问题标题】:query parameter validation with Jersey使用 Jersey 进行查询参数验证
【发布时间】:2025-12-09 07:35:01
【问题描述】:

我在 Java 中使用 Jersey 作为一个简单的 Web 服务器。我正在尝试处理 url 查询参数,例如

/path?value1=X&value2=Y&value3=Z

我能够通过使用 @QueryParam 注释来提取查询值,例如

@GET
@Produces(MediaType.APPLICATION_XML)
@Path("/path")
public String getUpdate(@QueryParam("All") List<String> allParam, 
        @QueryParam(value = "value1") String value1, 
        @QueryParam(value = "value2") String value2, 
        @QueryParam(value = "value3") String value3) {
        ...
}

现在我的问题是我需要验证输入。我主要是想确保 value1、value2 和 value3 遵循特定的格式。我还想确保这些参数不为空。

我查看了 Jersey 的 Bean Validation 文档,但似乎很难理解。这可能是因为我对 Jersey 框架还有些陌生。

那么如何设置查询参数验证?是否有更容易遵循的资源/示例我可以被引导到?谢谢

【问题讨论】:

    标签: java jersey jax-rs bean-validation


    【解决方案1】:

    由于@VA31 链接,如果您的球衣足够最新,您可以像这样使用 bean 验证。

    @GET
    @Produces(MediaType.APPLICATION_XML)
    @Path("/path")
    public Response getUpdate(
        @QueryParam("value1")
        @NotNull
        @Size(min = 1, max = 255)
        @Pattern(regexp = "\\d+")
        String value1, 
        @QueryParam("value2")
        @Min(52)
        @Max(53)
        int value2, 
        @QueryParam("value3")
        @NotNull
        Integer value3) {
    
    
    }
    

    【讨论】:

    • 如果所需的验证结果为假,jersey 会给出错误的请求吗?
    • @PratikSinghal 是的! 400 将收到违反直觉的消息。