Jersey框架:参数校验

参数校验的业务场景

在进行数据库查询前,后端程序会先对前端提交的参数进行校验,如果校验不通过则直接提示相应错误,避免无谓的错误操作。

Jersey参数校验机制

Jersey支持参数校验,注解定义在javax.validation.constraints包中,是一个空壳子,在具体校验时需要引入具体的实现。

org.glassfish.jersey.ext包实现的jersey-bean-validation是一种具体的实现,可以实现对参数长度、格式进行校验,并提示相应信息。使用参数校验,需在maven中引入以下代码。

<!--参数验证-->
<dependency>
    <groupId>org.glassfish.jersey.ext</groupId>
    <artifactId>jersey-bean-validation</artifactId>
    <version>${jersey2.version}</version>
</dependency>

参数校验常用注解

  • @Size 参数长度校验,使用频率最高的校验注解
    使用方法@Size(min = 24, max = 24, message = “提示信息”)
  • @Digits 校验是否为数字
  • @NotNull 校验必须不为空
  • @Null 校验必须为空
  • @Pattern 使用正则表达式校验

使用案例

Mongodb数据库会对每一个文档生成一个长度为24的自动id,在进行Mongodb数据库查询、更新和删除等操作时,需先对id进行校验,如果长度不为24,则提示错误。

@Path("/blog")
public class BlogRes {
    @Path("/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public Blog get(
            @Size(min = 24, max = 24, message = "id必须为24位")
            @PathParam("id") String id) {
        //使用id获取blog
        Blog blog = BlogService.getById(id);
        return blog;
    }
}

测试

在浏览器中访问http://localhost:8081/blog/123456123456123456123456,正确返回结果,如果访问http://localhost:8081/blog/123456,会提示错误,但并没有提示message属性中定义的id必须为24位,关于这个问题请参考另一篇文章。
Jersey框架:统一异常处理
Jersey框架:参数校验_第1张图片

案例Github地址:https://github.com/majxbear/jetty-rest

你可能感兴趣的:(Jersey,Jersey系列:实践全干货)