我想创建rest api。我不想在每个资源类中都使用绝对路径重复我自己,所以我想将其分层。 因此,而不是像这样:
@Path("/")
@Component
@Scope("request")
public class UsersResource extends Application {
@GET @Path("users/{id}/roles")
public Role usersResource(@PathParam("id") Long id) {
}
}
我想返回依赖资源,例如:
@Component
@Scope("request")
public class UsersResource {
@Inject private UserRolesResource userRolesResource;
@GET @Path("{id}/roles") public UserRolesResource getRolesResource(@PathParam("id") Long id) {
return userRolesResource.withUserId(id);
}
}
@Component
@Scope("request")
public class UserRolesResource {
private Long userId;
@GET public String getAll() {
return userId + "=r1, r2, r3";
}
@GET @Path("{id}") public String getById(@PathParam("id") Long id) {
return "userId " + userId + "roleId=" + id;
}
public UserRolesResource withUserId(Long userId) {
this.userId = userId;
return this;
}
}
如您所见,我正在尝试返回UserRolesResource
类,而不是数据。现在,我想球衣/ jaxrs不要序列化Resource类,而是应该将控制权移交给返回的资源,并在那里可以正确处理和序列化。
我在搭配靴子和运动衫时使用弹簧靴。
我无法看到正在运行的解决方案,可能只是缺少了一些body writer配置。
预先感谢
答案 0 :(得分:0)
哦,在我返回子资源的地方,我在子资源条目上输入了@GET
注释是非法的:@GET @Path("{id}/roles") public UserRolesResource getRolesResource(@PathParam("id") Long id) {
删除@GET
后,它可以正常工作。