我正在使用JAX-RS开发REST Api的过程中遇到过子资源问题。我希望能够直接访问资源以及子资源。例如/ products会返回所有产品的列表。其中/ user / 1 / products将返回仅与用户ID 1关联的产品。
以下是我发现的唯一方法。还有其他人有更整洁/更好的方法吗?
感谢阅读。
本。
@Path("/users")
public class UserResource {
@GET
public List<User> getUsers() {
/* return all users */
}
@GET
@Path("{id}")
public User getUser(@PathParam("id") int id) {
/* return single user */
}
@Path("{id}/products/")
public ProductResource getProductResource(@PathParam("id") int id) {
return new ProductResource(id);
}
}
@Path("/products")
public class ProductResource {
private int id;
public ProductResource() {
}
public ProductResource(int id) {
this.id = id;
}
@GET
public List<Product> getProducts() {
if(id != 0) {
/* return products for specific user */
} else {
/* return all products */
}
}
}