• RESTful 两个注解@PathParam 和 @QueryParam 以及@PathVariable


    @PathVariable 映射 URL 绑定的占位符

    通过 @PathVariable 可以将 URL 中占位符参数绑定到控制器处理方法的入参中:URL 中的 {xxx} 占位符可以通过

    @PathVariable("xxx") 绑定到操作方法的入参中。

    一般与@RequestMapping(method = RequestMethod.GET)一起使用

    @RequestMapping("/getUserById/{name}")
        public User getUser(@PathVariable("name") String name){
            return userService.selectUser(name);
        }
    
    若方法参数名称和需要绑定的uri中变量名称一致时,可以简写:
    @RequestMapping("/getUser/{name}") public User getUser(@PathVariable String name){ return userService.selectUser(name); }

    ---------------------------------------------------

    关于@PathParam 和 @QueryParam,两个注解都是取路径的,但是方式不同。这里我之前也遇到问题了。主要是看你怎么传入的路径。

    @QueryParam 主要通过键值对这样取 如 a=1     QueryParam("a")

    @PathParam   主要通过路径映射取(后面解释)

     
    1 关于@QueryParam用法,我们直接取参数传入的名字。

    如  localhost:8080/introduction?booId=1?gg=2?version=3?platform=4?vps=5

    .此时我们就用QueryParam   通过@QueryParam("bookId") Integer bookId 实际代码如下

        @GET
        @Path("/introduction")
        Response introduction(
                @QueryParam("bookId") Integer bookId,
                @QueryParam("gg") Integer gg,
                @QueryParam("version") String version,
                @QueryParam("platform") String platform,
                @QueryParam("vps") String vps
        );

    后台就获得booId=1    gg=2    version=3       platform=4       vps=5

     
    2  如果使用PathParam ,传参就应该为

    localhost:8080/introduction/1/2/3/4/5  对应下面的  /{bookId}/{gg}/{version}/{plarform}/{vps}

    @Path("/introduction/{bookId}/{gg}/{version}/{plarform}/{vps}")

    也就是让booId=1    gg=2    version=3       platform=4       vps=5  然后通过

    @PathParam ("bookId") Integer bookId                把bookId的值取出来

        @GET
        @Path("/introduction/{bookId}/{gg}/{version}/{plarform}/{vps}")
        Response introduction(
                @PathParam ("bookId") Integer bookId,
                @PathParam ("gg") Integer gg,
                @PathParam ("version") String version,
                @PathParam ("platform") String platform,
                @PathParam ("vps") String vps
        );

    后台同样获得booId=1    gg=2    version=3       platform=4       vps=5

    最后附上简单常用的注解,和一个讲restful 框架的一个帖子
    @PathParam注解

    该注解定义路径的参数信息,用于指定的URI路径参数,@PathParam 用在接收请求的方法的参数上。

        @GET
        @Path("/user/{username}")
        public String getUser(@PathParam("username") String userName) {
            return "hello," + userName;
        }


    @PathParam注解提供更精确的匹配方式,如要求变量只能由字母和数字构成,则可以使用表达式覆盖默认的表达式[^/]+?
    如@Path("users/{username: [a-zA-Z][a-zA-Z_0-9]*}")

    ---------------------------------------------------------------------------

    什么是资源(Resource)

    所谓"资源",就是网络上的一个实体,或者说是网络上的一个具体信息。它可以是一段文本、一张图片、一首歌曲、一种服务,总之就是一个具体的实在。你可以用一个URI(统一资源定位符)指向它,每种资源对应一个特定的URI。要获取这个资源,访问它的URI就可以,因此URI就成了每一个资源的地址或独一无二的标识符。
    应用,资源和子资源

    一个完整的资源访问路径(URI)由以下部分构成
    <协议>://<主机地址>:<端口>/应用域/<资源路径>/<子资源路径>
    如系统应用中获取用户详细信息的URI可表示为
    http://192.169.1.10:8080/system/user/1000001
    协议:常用的协议有http、https、ws

        主机地址:IP地址或域名
        端口:服务端口
        应用域:应用中根据业务属性划定的访问范围,如/system代表系统业务域,/product代表产品业务域
        资源路径:包含所有子资源的路径
        子资源路径:具体的资源访问地址

    Jersey中应用域在服务器的启动类中,通过ServletContextHandler提供的setContextPath方法指定。

    ServletContextHandler apiContext = new ServletContextHandler(
                    ServletContextHandler.SESSIONS);
    apiContext.addServlet(sh, "/*");
    //指定应用域
    apiContext.setContextPath("/system");

    @Path注解

    @Path注解的源码如下,可以看到该注解可以标记在类上,也可以标记在方法上,接收一个value参数,标识资源的地址。

    @Target({ElementType.TYPE, ElementType.METHOD})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Path {
        String value();
    }

    @Path使用举例

    @Path("")
    @WebService
    public class WelcomeRes {
        @Path("")
        @GET
        public String sayHello(@Context HttpServletRequest request) {
            return "hello, jetty!";
        }
    }

    根资源类(Root Resource Classes)

    在JAX-RS标准中,根资源类是带有@PATH 注解的类,且包含至少一个@Path 注解的方法或者方法带有 @GET、@PUT、@POST、 @DELETE 资源方法指示器的 POJO。
    资源方法(Resource Method)

    资源方法是带有资源方法指示器(resource method designator)注解的方法,在Jersey中,资源方法指示器即@GET、@HEAD、@PUT、@POST、 @DELETE。
    关于@Path注解的理解

        @Path("")相当于@Path("/"),即使注解的value中不显示指定"/",框架会自动加上。

    如以下示例中路径注解加"/"和不加,最后的访问地址都为/user

        @Path的内容是否以”/”开头都没有区别
        是否以”/”结尾也没有什么区别


     

  • 相关阅读:
    VB 程序参考
    VB6(控件):标准控件的使用详述(上)
    windows环境,python打包窗口程序
    python 中的struct
    C使用zeromq完成有意义的通讯
    svn 小白操作
    小白使用开源共享库 (C使用zeromq)
    centos安装zeromq(0mq, ZeroMQ, ØMQ)
    windows环境,python打包命令行程序
    SQL 记点
  • 原文地址:https://www.cnblogs.com/yangsanluo/p/14893194.html
Copyright © 2020-2023  润新知