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


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

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

讓我們探索所有可能的相互作用。

@FormParam

@formparam可以用來注入web表單的參數為REST風格的Web服務。

下面是一個例子:

 

resteasy tutorial

 

在這里,我們提交一個后請求包含兩個參數的電子郵件和密碼
是轉化為參數的“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) {
...
}

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM