我有一个我用java维护的REST API服务(通过jersey,JAX-RS)
我想在我的服务中支持以下路线:
for %%x in (*.J_E, *.J_T, *.J_I, *.BCC, *marmite*.*)
然而,它结合了类的/api/v1/users/{userId}/cars
注释。 e.g。
@Path
这是我的服务类:
/api/v1/cars/api/v1/users/{userId}/cars
有没有办法覆盖它?
答案 0 :(得分:3)
请注意以下事项:
当放置在方法上时,@Path
注释不会覆盖类的@Path
注释。 JAX-RS / Jersey使用@Path
注释执行分层匹配。
所以,你可以尝试:
@Path("api/v1")
public class CarsService {
@GET
@Path("/cars")
public Response getCars() {
...
}
@GET
@Path("/users/{userId}/cars")
public Response getUserCars(@PathParam("userId") Long userId) {
...
}
}
但是,您考虑过使用不同的资源类吗?
@Path("api/v1/cars")
public class CarsService {
@GET
public Response getCars() {
...
}
}
@Path("api/v1/users")
public class UsersService {
@GET
@Path("{userId}/cars")
public Response getUserCars(@PathParam("userId") Long userId) {
...
}
}
有关资源的更多详细信息,请查看documentation。
答案 1 :(得分:-1)
您应该将方法的@Path注释更改为:
@Path("users/{userId}/cars")
通过这种方式,连接类和方法@Path注释的结果路径将产生您想要的路径。