REST 常用參數(shù)注解

2018-08-08 14:26 更新

在前面的章節(jié)中,我們已經(jīng)了解了幾個參數(shù)注解,比如 通過 @PathParam 來獲取 URL 請求中的路徑參數(shù)。

@QueryParam

@QueryParam 用于從請求 URL 的查詢組件中提取查詢參數(shù)。我們在 MyResource 里面添加下面的方法:

@PUT
@Path("pojo")
@Consumes(MediaType.APPLICATION_JSON)  
@Produces(MediaType.APPLICATION_JSON)
public MyBean putPojo(@QueryParam("age") int age, 
        @QueryParam("name") String name) {
    MyBean pojo = new MyBean();
    pojo.setName(name);
    pojo.setAge(age);
    return pojo;
}

這個 PUT 方法,將會接收從URL 傳遞過來的參數(shù) age,name ,而后將這些參數(shù)賦給對象 MyBean ,并且返回。

啟動服務(wù),在 RESTClient 里面發(fā)送 PUT 請求 http://localhost:8080/webapi/myresource/pojo?age=28&name=waylau 。成功后就能接收到一個 JSON 數(shù)據(jù)對象。

{
   "age": 28,
   "name": "waylau"
}

parameter-annotations-01

@DefaultValue

如果需要為參數(shù)設(shè)置默認(rèn)值,可以使用 @DefaultValue,如:

我們在 MyResource 里面添加下面的方法:

@POST
@Path("pojo")
@Consumes(MediaType.APPLICATION_JSON)  
@Produces(MediaType.APPLICATION_JSON)
public MyBean postPojoDefault(@DefaultValue("21") @QueryParam("age") int age, 
        @DefaultValue("www.waylau.com")@QueryParam("name") String name) {
    MyBean pojo = new MyBean();
    pojo.setName(name);
    pojo.setAge(age);
    return pojo;
}

啟動服務(wù),在 RESTClient 里面發(fā)送 POST 請求調(diào)用 http://localhost:8080/webapi/myresource/pojo 接口,如果該請求包含參數(shù),則將參數(shù)值以對象形式放回,否則,將默認(rèn)值以對象形式放回

例如,當(dāng)我們的請求是http://localhost:8080/webapi/myresource/pojo?age=26&name=waylau

則返回

{
   "age": 26,
   "name": "waylau"
}

當(dāng)我們的請求是http://localhost:8080/webapi/myresource/pojo

則返回默認(rèn)值

{
   "age": 21,
   "name": "www.waylau.com"
}

@FormParam

@FormParam 顧名思義是處理 HTML表單請求的。要求所請求 MIME 媒體類型為 application/x-www-form-urlencoded,并且符合指定的 HTML 編碼的形式,此參數(shù)提取對于 HTML 表單 POST 請求是非常有用的。比如,我們要處理一個登陸表單,處理如下:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response login(@FormParam("username") String username,
        @FormParam("password") String password) {
    //業(yè)務(wù)邏輯省略...
    return null;
}

其他

其他的參數(shù)注解還包括

  • @MatrixParam 從 URL 路徑提取信息
  • @HeaderParam 從 HTTP 頭部提取信息
  • @CookieParam從關(guān)聯(lián)在 HTTP 頭部的 cookies 里提取信息
  • @BeanParam 允許注入?yún)?shù)到一個 bean
  • @Context 一般可以用于獲得一個Java類型關(guān)聯(lián)請求或響應(yīng)的上下文。

源碼

見 parameter-annotations。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號