【发布时间】:2012-03-14 03:49:07
【问题描述】:
我有两个用于涉及用户资源的简单 Web 服务(Jersey 和 GlassFish)的 REST 类 - 一个用于对所有用户进行操作(例如,@POSTing 的工厂),另一个用于单个用户(例如,@GET、@放,@删除)。他们在:
@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}
分别。发布到 AllUsersResource 时,我想返回新用户的位置(通过 Response.created(uri).build()),例如,
http://localhost:8080/.../user/152
我的问题是如何做到这一点。 AllUsersResource 注入@Context UriInfo uriInfo,但这并没有让我获得OneUserResource 的@Path 信息,只有当前调用(“用户”)的信息。我最终让它工作的方式是简单地使用反射,但我担心它是脆弱和不干净的:
OneUserResource.class.getAnnotation(Path.class).value();
搜索 StackOverflow 我发现尝试的唯一其他方法如下,但均未成功:
- com.sun.jersey.api.core.ResourceContext
- javax.ws.rs.core.UriInfo.getMatchedResources()
- @javax.inject.Inject OneUserResource oneUserRes;
任何帮助都会很棒!
【问题讨论】:
-
这个老问题今天与我有关。直接使用路径注释时要小心,因为其中可能存在表达式或路径参数,它们不会直接转换为路径,例如,“service/{username}”、“service/{empId: [0-9]+}” .
标签: java rest path jersey jax-rs