query parameter validation with Jersey

11,411

As @VA31 linked, you can use bean validation like this, if your jersey is latest enough.

@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) {


}
Share:
11,411
Admin
Author by

Admin

Updated on July 24, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm using Jersey in Java for a simple web server. I'm trying to handle with url query parameters, like

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

    I was able to extract the query value by using the @QueryParam annotation like

    @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) {
            ...
    }
    

    Now my problem is I need to validate the input. I'm mainly trying to make sure that value1, value2 and value3 follow a specific format. I also want to make sure that those parameters are not empty.

    I checked out the Bean Validation documentation for Jersey, but it seemed hard to follow. This is probably because I'm still somewhat new to Jersey framework.

    So how can I set up query parameter validations? Are there easier to follow resources/examples I could be directed to? Thanks

  • Pratik Singhal
    Pratik Singhal over 6 years
    Will jersey give a bad request, if the required validation turns out to be false ?
  • Jin Kwon
    Jin Kwon over 6 years
    @PratikSinghal Yes it does! 400 will be responded with counterintuitive message.