簡體   English   中英

Spring Data Rest 可以根據 HAL 規范使用 _links 嗎?

[英]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 不使用鏈接對象填充這些屬性( groupitemgroupItem )?

更新

/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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM