Jersey中@PathParam和@QueryParam的区别

前言

     图书馆项目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/

总结

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

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的大白啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值