我有两个REST类用于一个简单的Web服务(Jersey和GlassFish),涉及用户资源 - 一个用于操作所有用户(例如,@ POST),另一个用于单个用户(例如,@ GET,@ PUT,@ DELETE)。它们位于:
@Stateless @Path("users") public class AllUsersResource {...}
@Stateless @Path("user") public class OneUserResource {...}
分别地。当向 AllUsersResource 进行 POST 请求时,我希望返回新用户的位置(通过 Response.created(uri).build()
),例如:
http://localhost:8080/.../user/152
我的问题是如何实现这一点。AllUsersResource注入了@Context UriInfo uriInfo,但这不会为OneUserResource提供@Path信息,只提供当前调用的信息("users")。最终我让它工作的方法是简单地使用反射,但我担心这种方法过于脆弱和不干净:
OneUserResource.class.getAnnotation(Path.class).value();
我在 StackOverflow 上搜索了一下,尝试了以下方法,但都没有成功:
- com.sun.jersey.api.core.ResourceContext
- javax.ws.rs.core.UriInfo.getMatchedResources()
- @javax.inject.Inject OneUserResource oneUserRes;
希望有人能提供帮助!