在第一RESTEasy教程我們已經學習了基本的Web服務和休息我們已經測試了一個簡單的REST風格的Web服務。在本教程中,我們將
顯示如何將Web應用程序元素(形式參數,查詢參數和更多)為REST風格的Web服務。
你可以使用下面的注釋綁定HTTP請求REST風格的Web服務:
@FormParam
@PathParam
@QueryParam
@HeaderParam
@CookieParam
@MatrixParam
讓我們探索所有可能的相互作用。
@FormParam
@formparam可以用來注入web表單的參數為REST風格的Web服務。
下面是一個例子:
在這里,我們提交一個后請求包含兩個參數的電子郵件和密碼
是轉化為參數的“E”和“P”的登錄方法。
這里是完整的例子:
<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; }
你需要修改相應的方法:
@POST @Path("login") public String login(@Form User form) { return "Logged with " + form.email + " " + form.password; }
@PathParam
@pathparam標注綁定一個路徑段資源的方法參數的值。例如,下面的方法將攔截HTTP GET http://server:port/login/12345
“12345”@pathparam轉換為字符串“id”
@Path("/") public class LoginService { @GET @Path("login/{zip}") public String login(@PathParam("zip") String id) { return "Id is " +id; } }
作為@formparam,你可以嵌入@pathparam聲明在類級別上,如果你喜歡。
@QueryParam
@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
@headerparam 標注提取 HTTP標頭( HTTP header)並將它綁定到一個方法的參數。
例子:
@GET public String callService(@HeaderParam("User-Agent") String whichBrowser) { ... }
@CookieParam
@cookieparam注釋讀取信息存儲為一個cookie,並將它綁定到一個方法的參數。例子:
@GET public String callService(@CookieParam("sessionid") String sessionid) { ... }
@MatrixParam
@matrixparam注釋可以用來綁定包含多個 property (屬性)=value(值) 方法參數表達式。例如,假設你要調用一個網址 http://server:port/login?name=francesco&surname=marchioni
@GET public String callService(@MatrixParam("name") String name, @MatrixParam("surname") String surname) { ... }