在前面的章節(jié)中,我們已經(jīng)了解了幾個參數(shù)注解,比如 通過 @PathParam 來獲取 URL 請求中的路徑參數(shù)。
@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"
}
如果需要為參數(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 顧名思義是處理 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ù)注解還包括
見 parameter-annotations
。
更多建議: