[英]Can Spring Data Rest use _links per HAL spec?
将媒体类型为“application/hal+json”的 POST 请求发送到 Spring Data Rest 端点/api/groupMembers
。 它包含以下有效负载:
{
"id":null,
"_links":{
"group":{"href":"http://local:8080/api/groups/7"},
"item":{"href":"http://local:8080/api/items/10689"},
"groupItem":{"href":"http://local:8080/api/items/10689"}
}
}
这类似于HAL 规范中提供的示例。 所有这些 URI 都指向现有资源,并且可以在 Web 浏览器中取消引用。
但是,这些链接对象似乎没有被服务器上的 Spring Data Rest 正确组装:
TRACE 20248 --- [nio-8080-exec-9] .w.s.m.m.a.ServletInvocableHandlerMethod : Arguments: [org.springframework.data.rest.webmvc.RootResourceInformation@15aacfd5, Resource { content: GroupMember(id=null, group=null, item=null, groupItem=null), links: [] }, org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler@1d8f0f1a, application/hal+json]
为什么 Spring Data Rest 不使用链接对象填充这些属性( group
、 item
、 groupItem
)?
更新
对/api/GroupMembers/1
的 GET 请求会产生:
{
"id":1,
"_links":{
"group":{"href":"http://local:8080/api/groups/1"},
"item":{"href":"http://local:8080/api/items/689"},
"groupItem":{"href":"http://local:8080/api/items/689"}
}
}
因此,Spring Data Rest 可以生成/序列化此 JSON HAL 响应,但无法处理(反序列化)请求中的相同 JSON HAL。
更新 2
GroupMember 实体是:
@Entity
@Data
public class GroupMember {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne
@JoinColumn(name="groupId")
private Group group;
@ManyToOne
@JoinColumn(name="itemId")
private Item item;
@ManyToOne
@JoinColumn(name="groupItemId")
private Item groupItem;
}
我相信你想要实现的是这样的:
发布 /api/groupMembers
{
"id":null,
"group": "http://local:8080/api/groups/7",
"item": "http://local:8080/api/items/10689",
"groupItem": "http://local:8080/api/items/10689"
}
_links 只是元数据
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.