在第一RESTEasy教程咱们已经学习了基本的Web服务和休息咱们已经测试了一个简单的REST风格的Web服务。在本教程中,咱们将
显示如何将Web应用程序元素(形式参数,查询参数和更多)为REST风格的Web服务。
你能够使用下面的注释绑定HTTP请求REST风格的Web服务:web
@FormParam
@PathParam
@QueryParam
@HeaderParam
@CookieParam
@MatrixParamcookie
让咱们探索全部可能的相互做用。session
@formparam能够用来注入web表单的参数为REST风格的Web服务。学习
下面是一个例子:测试
在这里,咱们提交一个后请求包含两个参数的电子邮件和密码
是转化为参数的“E”和“P”的登陆方法。
这里是完整的例子:spa
<form method="POST" action="login"> Email Address: <input type="text" name="email"><br> Password: <input type="text" name="password"> <input type="submit"> </form>
@Path("/") public class LoginService { @POST
@Path("login")
public String login(@FormParam("email") String e, @FormParam("password") String p) {
return "Logged with " + e + " " + p;
}
}
做为一种替代方法,您能够在类级别上绑定参数电子邮件和密码,若是您须要在不一样的其余参数从新使用相同的参数,能够使用它是有用的
服务方法。指针
public class User { @FormParam("email") private String email; @FormParam("password") private String password; }
你须要修改相应的方法:rest
@POST @Path("login") public String login(@Form User form) { return "Logged with " + form.email + " " + form.password; }
@pathparam标注绑定一个路径段资源的方法参数的值。例如,下面的方法将拦截HTTP GET http://server:port/login/12345code
“12345”@pathparam转换为字符串“id”orm
@Path("/") public class LoginService { @GET @Path("login/{zip}") public String login(@PathParam("zip") String id) { return "Id is " +id; } }
做为@formparam,你能够嵌入@pathparam声明在类级别上,若是你喜欢。
@queryparam 标注绑定一个路径段资源的方法参数的值。例如,下面的方法将拦截HTTP GET http://server:port/login?zip=12345 和
将查询参数 “zip” 注入到方法参数 “zip”
@Path("/") public class LoginService { @GET @Path("login/{zip}") public String login(@QueryParam("zip") String zip) { return "Id is " +id; } }
@queryparam能够方便快捷使用defaultValue标注以便你能若是没有查询参数是经过避免空指针异常。
@GET @Path("login/{zip}") public String login(@DefaultValue("11111") @QueryParam("zip") String zip) { return "Id is " +id; }
做为@formparam,你能够嵌入@pathparam声明在类级别上,若是你喜欢。
@headerparam 标注提取 HTTP标头( HTTP header)并将它绑定到一个方法的参数。
例子:
@GET public String callService(@HeaderParam("User-Agent") String whichBrowser) { ... }
@cookieparam注释读取信息存储为一个cookie,并将它绑定到一个方法的参数。例子:
@GET public String callService(@CookieParam("sessionid") String sessionid) { ... }
@matrixparam注释能够用来绑定包含多个 property (属性)=value(值) 方法参数表达式。例如,假设你要调用一个网址 http://server:port/login?name=francesco&surname=marchioni
@GET public String callService(@MatrixParam("name") String name, @MatrixParam("surname") String surname) { ... }