Spring 启动 REST 资源不显示链接对象(集)
Spring Boot REST Resource not showing linked objects (sets)
我有一个数据库和一些 classes。这些 class 链接到 OneToMany
,依此类推。
如果我用 spring 打印对象本身,它包含所有内容。但是,如果我使用 Resource 功能打印它,它只包含变量,这些变量不是集合,也不会与其他 class.
链接。
如何将集合添加到输出?
默认情况下Spring Data REST 不显示关联资源,除非是链接。如果您想要,您必须定义描述您想要查看的字段的投影,无论它们是您描述的简单字段还是关联资源。参见
http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts
例如,假设您有一个 Service
资源与 serviceType
、serviceGroup
、owner
、serviceInstances
和 [=18= 等资源的关联].如果您希望这些显示在响应正文中,您可以创建一个投影:
package my.app.entity.projection;
import org.springframework.data.rest.core.config.Projection;
...
@Projection(name = "serviceDetails", types = Service.class)
public interface ServiceDetails {
String getKey();
String getName();
ServiceType getType();
ServiceGroup getGroup();
Person getOwner();
List<ServiceInstance> getServiceInstances();
List<DocLink> getDocLinks();
String getPlatform();
}
然后使用投影获取您的 URL:
http://localhost:8080/api/services/15?projection=serviceDetails
结果将包括预计属性:
{
"name" : "MegaphoneService",
"key" : "megaphone",
"type" : {
"key" : "application",
"name" : "User Application",
"description" : "A service that allows users to use a megaphone."
},
"owner" : null,
"serviceInstances" : [ {
"key" : "megaphone-a-dr",
"description" : null,
"loadBalanced" : true,
"minCapacityDeploy" : null,
"minCapacityOps" : 50
}, ... ],
...
}
我有一个数据库和一些 classes。这些 class 链接到 OneToMany
,依此类推。
如果我用 spring 打印对象本身,它包含所有内容。但是,如果我使用 Resource 功能打印它,它只包含变量,这些变量不是集合,也不会与其他 class.
链接。如何将集合添加到输出?
默认情况下Spring Data REST 不显示关联资源,除非是链接。如果您想要,您必须定义描述您想要查看的字段的投影,无论它们是您描述的简单字段还是关联资源。参见
http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts
例如,假设您有一个 Service
资源与 serviceType
、serviceGroup
、owner
、serviceInstances
和 [=18= 等资源的关联].如果您希望这些显示在响应正文中,您可以创建一个投影:
package my.app.entity.projection;
import org.springframework.data.rest.core.config.Projection;
...
@Projection(name = "serviceDetails", types = Service.class)
public interface ServiceDetails {
String getKey();
String getName();
ServiceType getType();
ServiceGroup getGroup();
Person getOwner();
List<ServiceInstance> getServiceInstances();
List<DocLink> getDocLinks();
String getPlatform();
}
然后使用投影获取您的 URL:
http://localhost:8080/api/services/15?projection=serviceDetails
结果将包括预计属性:
{
"name" : "MegaphoneService",
"key" : "megaphone",
"type" : {
"key" : "application",
"name" : "User Application",
"description" : "A service that allows users to use a megaphone."
},
"owner" : null,
"serviceInstances" : [ {
"key" : "megaphone-a-dr",
"description" : null,
"loadBalanced" : true,
"minCapacityDeploy" : null,
"minCapacityOps" : 50
}, ... ],
...
}