WebService@QueryParam@DefaultValue@PathParamの違い
5623 ワード
1まず@queryparamを見て例を見ます:Javaコード
URL入力:users/query?from=100&to=200&orderByy=age&orderByy=nameとして出力される場合、getUsers is called,from:100,to:200,orderBy[age,name]注意すべきは、@pathparamとは異なり、@queryparamでは、URLのパラメータがキー値ペアとして指定されているのに対し、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLにパラメータの値のみが表示され、キー値ペアが表示されず、キー値ペアが表示されず、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLには例えば「/users/2011/06/30」
則:Javaコード
出力:getUserHistory is called,year/month/day:2011/6/30
2動的に取得:Javaコード
URL;users/query?from=100&to=200&orderBy=age&orderBy=name出力:getUsers is called,from:100,to:200,orderBy[age,name]注意ここでorderby後の2つのパラメータをLIST処理として読み込む.
3@DefaultValue、デフォルト
例:Javaコード
URL:users/query出力:getUsers is called,from:1000,to:999,orderBy[name]
わかりやすいでしょう
Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@QueryParam("from") int from,
@QueryParam("to") int to,
@QueryParam("orderBy") List<String> orderBy) {
return Response
.status(200)
.entity("getUsers is called, from : " + from + ", to : " + to
+ ", orderBy" + orderBy.toString()).build();
}
}
URL入力:users/query?from=100&to=200&orderByy=age&orderByy=nameとして出力される場合、getUsers is called,from:100,to:200,orderBy[age,name]注意すべきは、@pathparamとは異なり、@queryparamでは、URLのパラメータがキー値ペアとして指定されているのに対し、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLにパラメータの値のみが表示され、キー値ペアが表示されず、キー値ペアが表示されず、プログラムでは@QueryParam("from")int fromではURLのfromの値が読み出され、@pathparemではURLには例えば「/users/2011/06/30」
則:Javaコード
@GET
@Path("{year}/{month}/{day}")
public Response getUserHistory(
@PathParam("year") int year,
@PathParam("month") int month,
@PathParam("day") int day) {
String date = year + "/" + month + "/" + day;
return Response.status(200)
.entity("getUserHistory is called, year/month/day : " + date)
.build();
}
出力:getUserHistory is called,year/month/day:2011/6/30
2動的に取得:Javaコード
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(@Context UriInfo info) {
String from = info.getQueryParameters().getFirst("from");
String to = info.getQueryParameters().getFirst("to");
List<String> orderBy = info.getQueryParameters().get("orderBy");
return Response
.status(200)
.entity("getUsers is called, from : " + from + ", to : " + to
+ ", orderBy" + orderBy.toString()).build();
}
URL;users/query?from=100&to=200&orderBy=age&orderBy=name出力:getUsers is called,from:100,to:200,orderBy[age,name]注意ここでorderby後の2つのパラメータをLIST処理として読み込む.
3@DefaultValue、デフォルト
例:Javaコード
@Path("/users")
public class UserService {
@GET
@Path("/query")
public Response getUsers(
@DefaultValue("1000") @QueryParam("from") int from,
@DefaultValue("999")@QueryParam("to") int to,
@DefaultValue("name") @QueryParam("orderBy") List<String> orderBy) {
return Response
.status(200)
.entity("getUsers is called, from : " + from + ", to : " + to
+ ", orderBy" + orderBy.toString()).build();
}
URL:users/query出力:getUsers is called,from:1000,to:999,orderBy[name]
わかりやすいでしょう