我们目前正在使用Spring Data Rest构建API,该API公开了有关HATEOAS原理的资源。
在客户端,我们有一个对象X列表,每个对象X包含一组对象Y,我们通常需要针对特定实例进行过滤。此列表已被获取,因此我们不需要执行其他请求。特定的实例由与Y具有一对一关系的另一个对象Z决定。现在的问题是,如何在不具有实例ID的情况下最好地(以Restful,HATEOAS方式)按Y进行过滤?
基本上,问题在于一对一关系为我们提供了格式为(项目关系)的URI:
"Z": {
"href": "https://URL/Z/3/Y"
}
在过滤列表时,我们需要以下格式的集合标识符:
"Y": {
"href": "https://URL/Y/9"
}
建议:
我们可以公开实例的ID,但是不建议这样做,因为有人认为自引用链接已经是一个标识符。 (请参阅here)
我们可以使用URI作为标识符。但是,由于我们仅获取了Z,因此URI的格式为“ Zentities / Zidentifier / Yentity”,而不是“ / Yentities / Yidentifier”。因此,我们将需要执行其他请求,以确定我们必须搜索的每个Y实体的自链接。
我们可以改为在后端进行搜索(即使所有资源都已在客户端加载),并使用相关对象Z的标识。这here中进行了说明。
关于(2)为什么首先使用标准格式?在Spring Data Rest中如何进行更改? (项目参考vs集合参考)
关于(3)对于特定的客户需求,应该采用多大的数据表示形式?
我非常感谢您提供解决此问题的最佳做法的建议。
亲切的问候