天天看点

RestEasy 用户指南----第4章.使用@Path @GET @POST 等

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)

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

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

GET /resources/stuff

GET/resources/foo/stuff

GET/resources/on/and/on/stuff

表达式的规则是

"([]*)"

例如

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

将会会和如下的路径匹配

GET/resources/bar/stuff

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

GET/resources/a/bunch/of/stuff

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

本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/696869,如需转载请自行联系原作者

继续阅读