精华内容
下载资源
问答
  • 主要介绍了@PathParam和@QueryParam区别,分享了相关实例代码,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
  • 为了把前端的name值传到后台,使用了@PathParam。后想到若name带有/,会不会出错,一试果然有问题,没法传到后台。 但我不想限制前端输入,故将@PathParam改为@QueryParam,使其以键值对的形式传到后台,真棒,成功...

    建议直接跳到结尾。


    为了把前端的name值传到后台,使用了@PathParam。后想到若name带有/,会不会出错,一试果然有问题,没法传到后台。

    但我不想限制前端输入,故将@PathParam改为@QueryParam,使其以键值对的形式传到后台,真棒,成功了。


    那么,@PathParam这么讨厌,居然不能输入/,为什么还要让它存在?

    存在必有其道理。所以就上网搜了一下。看到了下面这篇文章:

    http://docs.jboss.org/resteasy/2.0.0.GA/userguide/html/_PathParam.html

    原来@PathParam还有更复杂的应用场景。

    @GET

    @Path("/{fileName}.{fileSuffix}")

    public ResultBean changeFileName(@PathParam("fileName") String fn, @PathParam("fileSuffix") String fs) {

      //...

    }

    这样, Request请求 GET /woshihenyouxiude.pdf  后台方法得到fn为woshihenyouxiude,fs为pdf

    360doc上的这篇文章还举了正则表达式的栗子呢:

    @Path("/aaa{param:b+}/{many:.*}/stuff")

    public getIt(@PathParam("param")String bs, @PathParam("many")String many) {...}

    这样,Request请求

    GET /aaabb/some/stuff 后台获得bs为bb,many为some
    GET /aaab/a/lot/of/stuff 后台获得bs为b, many为a/lot/of


    Oh, My GOD!

    many居然可以为a/lot/of,我的天哪!

    本来以为@PathParam low low 的。没想到还有这种操作(感觉自己道行太浅,为自己默哀...)。

    于是我小试了一下......

    前端是这样的:

    XXXController.getIt({

      param: "aaabb",

      many: "a/lot/of"

    });

    查看浏览器Network,URL是这样的:.../aaaaaabb/a%2flot%2fof/stuff?...

    我以为的是前端传入aaabb,URL中应该也是aaabb,然后后台获取到的应该是bb;

    我还以为a/lot/of传过去,获取到的也应该是a/lot/of,但根本就没有跳到后台,就报错了。


    我把url直接输入在地址栏中,http://.../aaabb/a/lot/of/stuff?...

    后台获取到的就是正确的。


    然后我看了生成的rest-js文件,又去看了JSAPIWriter源码,发现它会用自己的方式去encode一遍。

    唉。。暂时不知道有什么方法能让它不要encode。因为看JSAPIWriter源码,它是无论如何都会去encode的。


    我就是结尾。

    @PathParam@QueryParam
    参数映射在URI中,不出现键值对,如/user/71/winneshen参数以键值对的形式出现,如/user?id=71&name=winneshen
    后台可正则解析得到参数传入方法前端传什么,后台就接收什么

    后台:

    @Controller

    @Path("/xxx")

    public class XXXController {

      @GET

      @Path("/aaa{id}/bbb{name}/user")

      public ResultBean getUserById (@PathParam("id") Long id, @PathParam("name") String name)

    }

    前端直接调用后台接口,如XXXController.getUserById({参数和回调})

    若前端传了id:71,name:"winneshen",查看浏览器Nerwork,Request URL会是/aaa71/bbbwinneshen/user

    若前端传了id:71,name:"winne/shen",查看浏览器Nerwork,Request URL会是/aaa71/bbbwinne%2fshen/user,会报400错误,因为resteasy会通过自己的方式自动编码。

    若直接在浏览器地址栏输入http://.../xxx/aaa71/bbbwinne/shen/user,则正常,后台获得id为71,name为winne/shen

    可通过查看rest-js和JSAPIWriter源码看个究竟。


    若上述内容有不对的地方,欢迎批评指正。




    展开全文
  • rest @PathParam

    千次阅读 2016-07-14 10:30:02
    @PathParam的声明允许你在URI路径中去映射你的方法将使用的参数。 @Path("/library") public class Library { @GET @Path("/book/{isbn}") public String getBook(@PathParam("isbn&...

    @PathParam的声明允许你在URI路径中去映射你的方法将使用的参数。

    @Path("/library")
    public class Library {
    
       @GET
       @Path("/book/{isbn}")
       public String getBook(@PathParam("isbn") String id) {
          // search my database and get a string representation and return it
       }
    }
    


     

     

    (很简单,当你发出get请求 /book/152-963参数152-963就在isbn中存储着,然后交给变量id,这样你的方法就算是成功的接收了该参数)

    这将允许你在uri中内嵌一个变量标识符。在上边的例子中,参数isbn被用来传递book的信息。你所嵌入的数据类型可以是任何元数据类型,例如String,具有String参数的构造函

    数的一个类对象,或者a static valueOf method that takes a String as a parameter。例如,假设ISBN是一个对象,我们可以

       @GET
       @Path("/book/{isbn}")
       public String getBook(@PathParam("isbn") ISBN id) {...}
    
    
       public class ISBN {
          public ISBN(String str) {...}
       }
    


     

    或者是一个public方法String构造,包含一个valueOf 方法


     

     

    <span style="font-size: 16px;">  public class ISBN {
         
         public static ISBN valueOf(String isbn) {...}
      }</span>
    

    在@Path中使用正则表达式

     

    @GET
    @Path("/aaa{param:b+}/{many:.*}/stuff")
    public StringgetIt(@PathParam("param") String bs, @PathParam("many")String many) {...}


     

     

    在如下的请求中,我们可以了解到“param”以及“many”值是多少

     

     

    Request

    param

    many

    GET /aaabb/some/stuff

    bb

    some

    GET /aaab/a/lot/of/stuff

    b

    a/lot/of


     

    最后欢迎大家访问我的个人网站:1024s

     

    展开全文
  • @PathParam

    2012-04-09 21:53:49
    @PathParam 的声明允许你在URI路径中去映射你的方法将使用的参数。     @Path("/library")  public class Library {     @GET   @Path("/book/{isbn}")   ...

    @PathParam 的声明允许你在URI路径中去映射你的方法将使用的参数。

     

     


    1. @Path("/library")  
    2. public class Library {  
    3.   
    4.    @GET  
    5.    @Path("/book/{isbn}")  
    6.    public String getBook(@PathParam("isbn") String id) {  
    7.       // search my database and get a string representation and return it  
    8.    }  
    9. }  

     

    (很简单,当你发出get请求 /book/152-963参数152-963就在isbn中存储着,然后交给变量id,这样你的方法就算是成功的接收了该参数)

    这将允许你在uri中内嵌一个变量标识符。在上边的例子中,参数isbn被用来传递book的信息。你所嵌入的数据类型可以是任何元数据类型,例如String,具有String参数的构造函

    数的一个类对象,或者a static valueOf method that takes a String as a parameter。例如,假设ISBN是一个对象,我们可以


    1. @GET  
    2. @Path("/book/{isbn}")  
    3. public String getBook(@PathParam("isbn") ISBN id) {...}  
    4.   
    5.   
    6. public class ISBN {  
    7.    public ISBN(String str) {...}  
    8. }  

    或者是一个public方法String构造,包含一个valueOf 方法


     


    1. <span style="font-size:16px;">  public class ISBN {  
    2.        
    3.      public static ISBN valueOf(String isbn) {...}  
    4.   }</span>  

     

    (运行中应该能够自动调用类的valueOf方法进行转换,对java不是很熟悉,我想大概应该是这样)


     

    5.1. @PathParam深入 以及正则表达式


     

    下边是一些更复杂的应用,这些在前边的章节并没有讨论

    你可以指定一个或者多个参数用以内嵌到你的uri中,下边是一些例子

     

    1.@Path("/aaa{param}bbb")

    2.@Path("/{name}-{zip}")

    3.@Path("/foo{name}-{zip}bar")


    那么,路径 "/aaa111bbb" 将会匹配#1. "/bill-02115"将会匹配 #2. 路径"foobill-02115bar" 将会匹配 #3.

    之前,我们已经讨论过如何在@Path中使用正则表达式

     

    [java]  view plain copy print ?
    1. @GET  
    2. @Path("/aaa{param:b+}/{many:.*}/stuff")  
    3. public StringgetIt(@PathParam("param") String bs, @PathParam("many")String many) {...}  

     

    在如下的请求中,我们可以了解到“param”以及“many”值是多少

     

    Request

    param

    many

    GET /aaabb/some/stuff

    bb

    some

    GET /aaab/a/lot/of/stuff

    b

    a/lot/of


     

     

    5.2@PathParam 和 PathSegment

    Thespecification has a very simple abstraction for examining a fragment of the URIpath being invoked on javax.ws.rs.core.PathSegment:


    1. public interface PathSegment {  
    2.   
    3.     /** 
    4.      * Get the path segment. 
    5.      * <p> 
    6.      * @return the path segment 
    7.      */  
    8.     String getPath();  
    9.     /** 
    10.      * Get a map of the matrix parameters associated with the path segment 
    11.      * @return the map of matrix parameters 
    12.      */  
    13.     MultivaluedMap<String, String> getMatrixParameters();  
    14.       
    15. }  

    你可以使用resteasy注入一个PathSegment而不是用一个值


    1. @GET  
    2. @Path("/book/{id}")  
    3. public String getBook(@PathParam("id") PathSegment id) {...}  

    当你使用matrix parameters传递诸多参数时,浙江爱那个非常有用。你可以将任意个name和value的键值对潜入到uri path segment中。PathSegment对象将会负责去获取这些参数。

    你也可以看一下MatrixParam(后边会讲到)

    一个matrix parameter的例子是

     

    GEThttp://host.com/library/book;name=EJB 3.0;author=Bill Burke

    展开全文
  • JAX-RS之@matrixParam和@PathParam.pdf
  • @Param和 @PathParam

    2021-06-08 16:49:26
    后端接受前端传递的参数,有常用的两种方式,@Param和 @PathParam, post请求------@Param get请求-----@PathParam 一、 @Param 1.关于@Param @Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为...

    前言

    后端接受前端传递的参数,有常用的两种方式,@Param@PathParam,
    post请求------@Param
    get请求-----@PathParam

    一、 @Param

    1.关于@Param

    @Param是MyBatis所提供的(org.apache.ibatis.annotations.Param),作为Dao层的注解,作用是用于传递参数,从而可以与SQL中的的字段名相对应,一般在2=<参数数<=5时使用最佳。

    2.使用@Param

    2.1 方式一

    /**
         * 登入
         * @param userName
         * @param passWord
         * @return
         */
        @PostMapping("/login")
        public Result login(@Param("userName") String userName ,@Param("passWord") String passWord) {}
    

    2.2方式二
    使用Java Bean来传递多个参数,定义一个POJO
    在这里插入图片描述

     /**
         * 注册
         */
        @PostMapping("/register")
        public Result register(@Param("RegisterDto") RegisterDto RegisterDto) {}
    

    这里顺手贴一下bean类的代码

    package com.jjshipping.jjshipping.dto;
    
    import lombok.Data;
    
    import java.io.Serializable;
    
    @Data
    public class RegisterDto implements Serializable {
        private String userName;
    
        private String passWord;
    
        private String realName;
    
        private String phoneNumber;
    }
    
    

    二、 @PathParam

    @PathParam用于get方法接受参数,使用方式如下,不能直接接受bean类,只能一个一个展开(目前自己测试的结果是这样的),所以参数多的时候用起来不太方便。

     @GetMapping("/registerGet")
        public Result registerGet(@PathParam(value = "userName") String  userName,@PathParam(value = "passWord")String passWord) {
            System.out.println("userName = " + userName);
            System.out.println("passWord = " + passWord);
    
            return null;
    
        }
    
    展开全文
  • @PathParam @QueryParam

    2017-02-15 12:47:39
    @QueryParam和@PathParam比较 1 先来看@queryparam   Path("/users")  public class UserService {     @GET   @Path("/query")   public Response getUsers(   @QueryParam("fro
  • JAX-RS @PathParam示例

    2020-05-25 12:02:04
    在JAX-RS中,可以使用@PathParem将@Path表达式中定义的URI参数的... 一种使用@PathParam简单且正常的方法。 import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs...
  • @PathParam 和 @QueryParam

    千次阅读 2016-10-30 19:40:45
    @PathParam 和 @QueryParam区别
  • RESTfulPOJO:演示POJO作为资源和@ QueryParam,@ FormParam,@ PathParam
  • @PathVariable与@PathParam

    万次阅读 2018-05-12 22:33:15
    @PathVariable 与 @PathParam 详见下面示例。@PathVariablehttp://127.0.0.1:8080/tangyaliang此种获取参数值的方式,需要在value中指定一个key,并且在方法参数中一定要有这个key不然报500错误{name}对应的@...
  • @PathParam 和 @PathVariable 注解是用于从 request 中接收请求的,两个都可以接收参数,关键点不同的是@PathParam 是从 request 里面拿取值,而 @PathVariable 是从一个url模板里面来填充(绑定 URL 占位符到功能...
  • RESTful 两个注解@PathParam 和 @QueryParam

    万次阅读 多人点赞 2018-03-15 13:54:08
    关于@PathParam 和 @QueryParam,两个注解都是取路径的,但是方式不同。这里我之前也遇到问题了。主要是看你怎么传入的路径。 @QueryParam 主要通过键值对这样取 如 a=1 QueryParam("a") @PathParam ...
  • WebSocket区分不同客户端两种方法(HttpSession和@PathParam
  • @RequestParam,@PathParam,@PathVariable等注解区别
  • 1. @pathVariable(value = "xx") 取的url 中的 /xx/yy 的xx ...2. @PathParam(value="xx")和@RequestParam(value="xx") 这两个都是有parameter的意思,那就是取的url中的 xx/hello?xx=1&yy=2中的xx
  • 注意@PathVariable才是得到restful风格中uri中的参数值,很容易用成@PathParam而获取不到前台传递的id值
  • pathparm:是从request中来...例如: @pathparam 请求接口时 将变量URI路径片段映射到方法调用中 http:///userId?user=1 @pathVariable 请求接口时 将占位符参数(Restful风格)映射到方法调用中 http:///userId/2 ...
  • 1. @PathParam ,在url后面直接在斜杠后面添加参数值,例如:http://localhost:80/Test/001 ; 2. @QueryParam ,在url后面添加“键值对”形式的参数,例如:http://localhost:80/Test?id=001 ;
  • 文章目录1、@RequestParam2、@PathVariable3、@PathParam 1、@RequestParam @RequestParam 是从request里面拿取值 @PostMapping("getUserId2") @ApiOperation(value = "获取Id2", notes = "通过用户ID获取") public ...
  • @QueryParam和@PathParam使用方法比较 先来看@queryparam   先看例子: Path("/users") public class UserService { @GET @Path("/query") public Response getUsers( @QueryParam("from") ...
  • JAX-RS @PathParam example

    2015-08-27 10:58:47
    In JAX-RS, you can use @PathParem to inject the value of URI parameter that defined in @Path expression, into Java method.... @PathParam – Single ParameterA simple and normal way to use @PathParam.impor
  • 文章目录@RequestParam@PathVariable@PathParam @RequestParam 获取路径参数 如: http://localhost:8080/springmvc/hello/101?param1=10&param2=20 @RequestParam 可以获取 param1、param2 的参数 public ...
  • @QueryParam VS @PathParam

    2014-03-13 18:34:24
    有时候困惑于到底用URL pathParam呢还是URL queryParam, 可以按照这个规则 @QueryParam用于filtering,分页 --- 结果集会根据参数值得不同而不同 @PathParam用于grouping,--- 着重[b]资源[/b],比较稳定和...
  • @PathParam和@QueryParam的区别: 1. @PathParam —— url中直接在斜杠后面添加参数值 例如:www.test.com/customer/001  2. @QueryParam —— url中在后面添加【键值对】形式的参数 例如:...
  • 【java】--@PathParam 和@QueryParam

    千次阅读 热门讨论 2017-11-19 20:19:01
    参数(Parameter Annotations)  Parameter Annotations用于获取client发送的数据...@PathParam  使用@PathParam可以获取URI中指定规则的参数,比如: @GET @Path("{username"}) @Produces(MediaType.APPLICATION_JS
  • Querystring 和 path param 的 拼接请求参数,区别和怎么调用 区别 ...PathParam 指 url 后面的斜杠后面添加参数值 拼接参数 QueryParam(eg./api/student?id=001) PathParam(eg. /api/studen...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,691
精华内容 2,676
关键字:

pathparam