RestEasy 用户指南----第4章.使用@Path @GET @POST 等
2011-10-13 15:59
537 查看
View Code
如果你在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)
下边的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
(其实,也就是指明的正则表达式说明了该部分的路径应该符合什么样的规则。如果是默认的化,当然,你可以大致了解一下正则表达式)
@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
(其实,也就是指明的正则表达式说明了该部分的路径应该符合什么样的规则。如果是默认的化,当然,你可以大致了解一下正则表达式)
相关文章推荐
- RestEasy 用户指南----第4章.使用@Path @GET @POST 等
- RestEasy 用户指南----第4章.使用@Path @GET @POST 等
- RestEasy 用户指南----第5章.@PathParam
- RestEasy 用户指南----第7章 @HeaderParam
- RESTEasy之间交互之Post和Get
- RestEasy 用户指南----第7章 @HeaderParam
- HBase rest API - GET、PUT/POST、的使用
- 使用 @Path and @GET, @POST, 等
- 《gradle 用户指南》中文版 第4章 使用Gradle命令行
- restclient使用get,post方式发送http请求
- 使用FireFox插件RESTClient、HttpRequester模拟http(get post)请求
- 使用RESTClient插件进行数据模拟(GET,POST)提交
- 【Gradle Build Tool 4.1用户指南】Chapter 4. Using the Gradle Command-Line 第4章 使用Gradle命令行
- RestEasy用户指南---第6章.@QueryParam
- 使用HttpClient 4.3.4 自动登录并抓取中国联通用户基本信息和账单数据,GET/POST/Cookie
- 使用RESTClient插件数据模拟(GET,POST)提交
- 使用RESTClient插件进行数据模拟(GET,POST)提交
- Rest使用get还是post
- 因为缺失POST GET注解而导致Failed processing arguments of org.jboss.resteasy.spi.metadata.ResourceLocator
- RestEasy 用户指南---第11章 @FormParam