zoukankan      html  css  js  c++  java
  • REST技术第四步 多个參数注解问题

    经过实验,发如今使用@BeanParam注解的查询类字段上。

    @FormParam@QueryParam不能同一时候加上去,仅仅能加一个,否则会出现取不到数据的情况。

    并且在方法參数上两个注解也不能同一时候加上去。

    同一时候加上是一个注解能工作。另外一个不能工作。

    我做个实验。

    package beanparam;
     
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.PathParam;
    import javax.ws.rs.QueryParam;
     
    @Path("/{b}.htm")
    public class AddRest {
    	@GET
    	public String process(@PathParam(value = "b") @QueryParam("b")  int b){
    		return "<h1>b = "+b+"</h1>";
    	} 
    }


    实验结果表明。@QueryParam的优先级高于@PathParam。不不过这样,并且@PathParam好像还失去了作用。比方我把url里的数字改掉。改成字母。绝对不报错的。

     

    这就说明取參数的注解它一定有个优先级问题。同一时候加在一个字段上,必然会覆盖还有一个。这么做就会碰到一种非常烦的情况。就是有些參数既可能来自get请求,从URL中取,又可能来自post请求,并且post请求还可能是放在URL里面的。

    这种@FormParam@QueryParam同一时候加上去就仅仅有一个能起作用。这是非常烦的。

    对于这种情况,能够用@Context注解注入一个HttpServletRequest对象来调用getParameter方法来做。

    此外,同一个方法,也不要同一时候加上@GET与@POST或其它注解注解。

    假设一定要的话。能够把方法内容抽出来写一个新方法。

    然后写两个方法,分别加上两个注解,内部调用抽出来的公共代码。

    比方:

    @GET

    public String get(){

    return business();

    }

    @POST

    public String post(){

    return business();

    }

    这个business就是公共代码。

  • 相关阅读:
    树链剖分总结
    主席树总结
    BZOJ1053:反素数(数学)
    CH3101 阶乘分解
    2018-2019 ACM-ICPC ECfinal I. Misunderstood … Missing
    洛谷P3201 [HNOI2009]梦幻布丁(链表 + 启发式合并)
    Codeforces Round #552 (Div. 3) 题解
    线段树合并 总结
    生成器
    Python中input()和raw_input()的区别
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7207546.html
Copyright © 2011-2022 走看看