假设我有一组 JAX-RS 定位器和子定位器,如下所示:
@Path("/users")
public class UserListResource {
@Path("/{id}")
public UserResource getCustomer(@PathParam("id") int id) {
// Find and return user object
}
}
public class UserResource {
@GET
public String get() {...}
}
Run Code Online (Sandbox Code Playgroud)
例如,UserResource
具有 ID的对象5
将具有路径"/users/5"
。在我的系统中,我有几种不同的资源。
现在的问题是:服务器如何找出给定资源的路径?我可以通过某些 JAX-RS API 以编程方式执行此操作,还是必须实现使用反射的代码?(我知道如何做后者,但更喜欢另一种方法。)
UriInfo
提供此功能的对象,但我需要提前知道路径(以通知客户端不一定通过 JAX-RS 资源发生的更改)。"/users"
和"/{id}"
)设置一组路径片段常量。当我读到你的问题时,你需要构建一个只知道资源类和id
参数的 URI。
可以使用UriBuilder
类来完成,如下所示:
UriBuilder builder=UriBuilder.fromResource(UserListResource.class);
URI uri=builder.path(UserListResource.class,"getCustomer").build(5);
Run Code Online (Sandbox Code Playgroud)
它在底层使用了反射,因此重构起来并不容易,但这就是目前可用的全部。
归档时间: |
|
查看次数: |
4008 次 |
最近记录: |