RESTEasy:@FormParam、@PathParam、@QueryParam、@HeaderParam、@CookieParam、@MatrixParam說明

在第一RESTEasy教程咱們已經學習了基本的Web服務和休息咱們已經測試了一個簡單的REST風格的Web服務。在本教程中,咱們將
顯示如何將Web應用程序元素(形式參數,查詢參數和更多)爲REST風格的Web服務。
你能夠使用下面的註釋綁定HTTP請求REST風格的Web服務:web

@FormParam
@PathParam
@QueryParam
@HeaderParam
@CookieParam
@MatrixParam
cookie

讓咱們探索全部可能的相互做用。session

@FormParam

@formparam能夠用來注入web表單的參數爲REST風格的Web服務。學習

下面是一個例子:測試

 

resteasy tutorial

 

在這裏,咱們提交一個後請求包含兩個參數的電子郵件和密碼
是轉化爲參數的「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

@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

@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) {
...
}
相關文章
相關標籤/搜索