Jersey中@PathParam和@QueryParam的区别

来源:互联网 发布:中文域名网站 编辑:程序博客网 时间:2024/06/05 07:57

前言

     图书馆项目controller层代码是由swagger工具定义好的api生成的,在实现接口的时候,出现了@PathParam和@QueryParam,这两个都可以实现功能,究竟有什么不一样呢?

正文

     Jersey RESTful 框架是开源的RESTful框架,实现了JAX-RS规范。它是基于Java的一个轻量级RESTful风格的Web Services框架。Jsersey中有几种常用的接收参数的注解:
@PathParam 、@QueryParam 、@FormPaem 、@FormDataParm,本文重点来说一下前两个注解。

@PathParam 注解

     使用@PathParam 可以获取URI中指定规则的参数。
     例子:

//分页查询所有图书信息 @GET        @Path("/getAllbook/{pageNum}/{pageSize}")        @Produces({ "application/json" })        @ApiOperation(value = "获取图书信息", notes = "根据查询条件获取图书信息 ", response = Book.class, responseContainer = "List", tags="Android")        @ApiResponses(value = {                @ApiResponse(code = 200, message = "获得所有分类", response = Book.class),                @ApiResponse(code = 400, message = "Not Found", response = Book.class) })        public Response getAllbookType(@io.swagger.annotations.ApiParam(value = "图书分类",required=true) @DefaultValue("1") @PathParam("pageNum") int pageNum, @DefaultValue("10") @PathParam("pageSize") int pageSize , @Context SecurityContext securityContext)                throws NotFoundException {             List<TBook> list = TBookRepository.findAll();            return Optional.ofNullable(list)                    .map(result -> Response.status(Response.Status.OK).entity(new PaginationEntity(pageNum, pageSize, list)).build())                    .orElse(Response.status(Response.Status.NO_CONTENT).build());        }

     请求方式:url中直接在斜杠后添加参数值

这里写图片描述

@QueryParam注解

      使用@QueryParam用于获取GET请求中的查询参数,定义路径中的参数信息,每一个参数都对应一个子资源。
      例子:

//根据isbn查询图书信息@GET    //标注类和方法请求的路径,@PathParam和@Path配合使用    @Path("/findBookDetailsByIsbn/{isbn}")    //指定将要返回给client端的数据标识类型为json    @Produces({ "application/json" })    @ApiOperation(value = "点击某本书进入书的详情页", notes = "根据书的书号,查找书的简介,目录,出版社,图书分类 ", response = Book.class, responseContainer = "List", tags="Admin")    @ApiResponses(value = {        @ApiResponse(code = 200, message = "获得查询结果", response = Book.class),        @ApiResponse(code = 400, message = "Not Found", response = Book.class) })    public Response findBookDetailsByIsbn(@ApiParam(value = "图书的ISBN编号",required=true) @QueryParam("isbn") String isbn,@Context SecurityContext securityContext)    throws NotFoundException {      List<TBookBasic> list = BookService.findBookDetailsByIsbn(isbn);          return Optional.ofNullable(list)                .map(result -> Response.status(Response.Status.OK).entity(list).build())    .orElse(Response.status(Response.Status.NOT_FOUND).build());    }

     请求方式:url中在后面添加“键值对”形式的参数,该注解定义查询参数,表明是一个查询条件,查询参数组成了查询条件。

这里写图片描述
    PS:注解@QueryParam还可以和@DefaultValue一起使用,@DefaultValue表示预置一个默认值,当请求中不包括该参数时使用这个默认值。

Jersey常用注解

这里写图片描述

Jersey官方文档

https://jersey.github.io/

总结

    知识的学习在不知不觉中,欢迎大家拍砖。

原创粉丝点击