有没有办法以root身份和子资源使用Resorces? 我想用这种方式调用我的api端点:
GET /persons/{id}/cars # get all cars for a person
GET /cars # get all cars
如何实现我的资源以使用此网址架构?
人力资源:
@Path("persons")
public class PersonsResource {
@GET
@Path("{id}/cars")
public CarsResource getPersonCars(@PathParam("id") long personId) {
return new CarsResource(personId);
}
}
汽车资源:
@Path("cars")
public class CarsResource {
private Person person;
public CarsResource(long personId) {
this.person = findPersonById(personId);
}
@GET
public List<Car> getAllCars() {
// ...
}
@GET
public List<Cars> getPersonCars() {
return this.person.getCars();
}
}
答案 0 :(得分:0)
你没有这样做,而是将CarsResource
的实例注入PersonsResource', and then you call the method of
getPersonCars`,如下所示
@Path("persons")
public class PersonsResource {
@inject
private CarsResource carsResource;
@GET
@Path("{id}/cars")
public List<Cars> getPersonCars(@PathParam("id") long personId) {
return carsResource.getPersonCars(personId);
}
}
@Path("cars")
public class CarsResource {
@GET
@Path("all")
public List<Car> getAllCars() {
// ...
}
public List<Cars> getPersonCars(long personId) {
Person person = findPersonById(personId);
return person.getCars();
}
}