先来看@queryparam
先看例子:
1.
2. Path("/users")
3. public class
4.
5. @GET
6. @Path("/query")
7. public
8. @QueryParam("from") int
9. @QueryParam("to") int
10. @QueryParam("orderBy") List<String> orderBy) {
11.
12. return
13. 200)
14. "getUsers is called, from : " + from + ", to : "
15. ", orderBy"
16.
17. }
18.
19. }
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&orderBy=age&orderBy=name
此时,输出为:
getUsers is called, from : 100, to : 200, orderBy[age, name]
要注意的是,跟@pathparam不同,@queryparam
中,指定的是URL中的参数是以键值对的形式出现的,而在程序中
@QueryParam("from") int from则读出URL中from的值,
而@pathparem中,URL中只出现参数的值,不出现键值对,比如:
“/users/2011/06/30”
则:
1. @GET
2. @Path("{year}/{month}/{day}")
3. public
4. @PathParam("year") int
5. @PathParam("month") int
6. @PathParam("day") int
7.
8. "/" + month + "/"
9.
10. return Response.status(200)
11. "getUserHistory is called, year/month/day : "
12. .build();
13.
14. }
@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 以动态的方式获得:
1. @Path("/users")
2. public class
3.
4. @GET
5. @Path("/query")
6. public Response getUsers(@Context
7.
8. "from");
9. "to");
10. "orderBy");
11.
12. return
13. 200)
14. "getUsers is called, from : " + from + ", to : "
15. ", orderBy"
16.
17. }
18.
@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后的两个参数读入为LIST处理了.
3 @DefaultValue,默认值
例子:
Java代码
1. @Path("/users")
2. public class
3.
4. @GET
5. @Path("/query")
6. public
7. @DefaultValue("1000") @QueryParam("from") int
8. @DefaultValue("999")@QueryParam("to") int
9. @DefaultValue("name") @QueryParam("orderBy") List<String> orderBy) {
10.
11. return
12. 200)
13. "getUsers is called, from : " + from + ", to : "
14. ", orderBy"
15.
16. }
@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]
很好理解吧