zoukankan      html  css  js  c++  java
  • RestEasy 用户指南第4章.使用@Path @GET @POST 等

    View Code
    @Path("/library")
    public class Library {

    @GET
    @Path("/books")
    public String getBooks() {...}

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

    @PUT
    @Path("/book/{isbn}")
    public void addBook(@PathParam("isbn") String id, @QueryParam("name") String name) {...}

    @DELETE
    @Path("/book/{id}")
    public void removeBook(@PathParam("id") String id {...}


    }



    如果你在RestEasy servlet 中已经配置过请求的根路径http://hostname.com/services 那么如下请求将会被Library所捕捉到

    • GET http://myhost.com/services/library/books
    • GET http://myhost.com/services/library/book/333
    • PUT http://myhost.com/services/library/book/333
    • DELETE http://myhost.com/services/library/book/333

    类和资源方法的@Path(在包javax.ws.rs 中)声明都是必要的,声明的是一个相对路径,根路径,类所声明的路径,方法所声明的路径拼接在一起构成了访问某个resource的一个url。(也就是说,访问这个url,服务端就会自动触发该事件)

    包javax.ws.rs 中可以有各种的http 请求方式的声明,例如@GET,@POST,@PUT,@DELETE,@HEAD.你可以把某一特定的请求方式放在public方法之上,你如果你在你的类上有@path的声明,那么在方法上的path声明并不是必须的,但前提是你能够通过不同的http请求来区分不同的方法,这样服务端才能明白你所请求的是那一个资源(方法)。

    如果一个方法是只有@Path的声明,而没有http请求方式的声明,那么该方法被称为JAXRSResourceLocators(我觉得作者表达的意思是如果有@Path的声明的方法叫做JAXRSResourceLocators)


    4.1 @Path 和正则表达式的映射

    @Path的声明并不是仅仅简单的路径表达式。你可以插入正则表达式。例如

    @Path("/resources)
    public class MyResource {

    @GET
    @Path("{var:.*}/stuff")
    public String get() {...}
    }


    下边的get请求将会对应被引导至getResource()方法上


    GET /resources/stuff

    GET/resources/foo/stuff

    GET/resources/on/and/on/stuff


    表达式的规则是

    "{"variable-name [ ":"regular-expression ] "}"


    正则表达式部分(regular-expression)是可选的,如果没有提供该规则式,那么他默认进行匹配,用正则式来形容就是


    "([]*)"


    例如

    @Path("/resources/{var}/stuff")


    将会会和如下的路径匹配

    GET/resources/foo/stuff

    GET/resources/bar/stuff


    但是,和该路径是不匹配的

    GET/resources/a/bunch/of/stuff

    (其实,也就是指明的正则表达式说明了该部分的路径应该符合什么样的规则。如果是默认的化,当然,你可以大致了解一下正则表达式)



  • 相关阅读:
    Algs4-2.3.11快排遇与切分值相同时继续扫描是平方级
    使用kubeadm搭建Kubernetes集群
    kubernetes发布解释型语言应用的最佳实践
    docker化php项目发布方式
    linux服务器免密钥登录
    cp 递归复制时 复制实际文件而不是链接文件
    nginx配置http访问自动跳转到https
    nfs服务器
    nginx防止恶意域名解析
    如何建立自己的知识体系?(摘)
  • 原文地址:https://www.cnblogs.com/linecheng/p/2210942.html
Copyright © 2011-2022 走看看