在第一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) { ... }