在JAX-RS中,可以使用@QueryParam
批注将URI查询参数注入Java方法。 例如,
/users/query?url=mkyong.com
在上述URI模式中,查询参数为“ url = mkyong.com ”,您可以使用@QueryParam("url")
获得url值。
1. @QueryParam示例
请参阅在JAX-RS中使用@QueryParam
的完整示例。
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
@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();
}
}
URI模式:“ users / query?from = 100&to = 200&orderBy = age&orderBy = name ”
getUsers is called, from : 100, to : 200, orderBy[age, name]
喜欢它 ?
@QueryParam会将查询参数“ orderBy = age&orderBy = name ”自动转换为java.util.List
。
2.程序化查询参数
或者,您可以通过“ @Context UriInfo
”语法获取查询参数。 请参阅下面的等效版本:
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
@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();
}
}
URI模式:“ users / query?from = 100&to = 200&orderBy = age&orderBy = name ”
getUsers is called, from : 100, to : 200, orderBy[age, name]
3. @DefaultValue示例
@DefaultValue
适合用作可选参数。
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Response;
@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();
}
}
URI模式:“ 用户/查询 ”
getUsers is called, from : 1000, to : 999, orderBy[name]
下载源代码
下载它– JAX-RS-QueryParam-Example.zip (6 KB)
参考文献
- JAX-RS @QueryParam JavaDoc
- JAX-RS @Context JavaDoc
- JAX-RS UriInfo JavaDoc
- JAX-RS @DefaultValue JavaDoc
翻译自: https://mkyong.com/webservices/jax-rs/jax-rs-queryparam-example/