一:概念
JAX-RS:基于http协议的restful web service的一套java API
resteasy:符合JAX-RS规则的能够在servlet容器内运行的restful web service框架的一个实现,其本身就是一个servlet实现
二:安装
下载并解压,将lib目录下的文件放入你的/WEB-INF/lib目录下(maven的话直接加dependency即可)
三:标签
1:@Path
浏览器访问的URL路径,访问的实现是由servlet容器来实现的
项目经验:webclient与webservice约定俗成,只要一致就可以对应,名字可以随意起,只要唯一并对应即可
类上面和方法上面都可以使用@Path标签
除了可以是简单的路径之外,也可以是路径匹配的正则表达式 "{" variable-name [ ":" regular-expression ] "}"
例如:
a:/resources/stuff
b:/resources/foo/stuff
c: /resources/on/and/on/stuff
@Path("{var:.*}/stuff") 匹配a、b、c
@Path("/resources/{var}/stuff") 匹配b
2:@PathParam
java对象:例如String
@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
}
}
自创对象:如下(对象要么有String参数的构造函数,要么实现valueof方法)
@GET
@Path("/book/{isbn}")
public String getBook(@PathParam("isbn") ISBN id) {...}
public class ISBN {
public ISBN(String str) {...}
}
public class ISBN {
public static ISBN valueOf(String isbn) {...}
}
也符合正则表达式
1. @Path("/aaa{param}bbb")
2. @Path("/{name}-{zip}")
3. @Path("/foo{name}-{zip}bar")
"/aaa111bbb" 匹配1
"/bill-02115" 匹配2
"foobill-02115bar" 匹配3
"many"与“param"
@GET
@Path("/aaa{param:b+}/{many:.*}/stuff")
public String getIt(@PathParam("param") String bs, @PathParam("many") String many) {...}
Request param many
GET /aaabb/some/stuff bb some
GET /aaab/a/lot/of/stuff b a/lot/of
3:@QueryParam
@ QueryParam注解允许你映射一个URI查询字符串参数或URL形式编码参数的方法调用.
4:@:HeaderParam
@ HeaderParam注解允许你映射请求的HTTP报头的方法调用.