我们正在使用spring-data-rest 2.6.8和spring-boot 1.5.8,它太棒了!尽管如此,我们发现了一些奇怪的行为。
当我们对/rest/students/search/findByTeacher?teacher=/rest/teachers/1
进行GET时,一切都顺利进行。 SDR将教师URI转换为教师实体,我们会得到一份学生列表。
当我们提供不同的URI(解析为同一个对象)时,系统无法进行转换:/rest/students/search/findByTeacher?teacher=/rest/class/2/teacher
目前我们分两个步骤执行此操作。首先我们获取/rest/class/2/teacher
,然后我们使用_links.self.href
(/ rest / teachers / 1)进行搜索。
有没有办法配置SDR以避免这个两步过程?
答案 0 :(得分:1)
我认为不可能。解析链接时的Spring Data Rest工作方式基本上是抓取url,从头开始删除baseUri,然后尝试将URL的下一部分与repository {teachers}匹配,然后使用findOne方法查询存储库。在这种情况下,网址/rest/teachers/1
只是资源的标识符(没有hateoas就像老师ID = 1)
查询/rest/class/2/teacher
的问题在于你不知道它将被解析 - 它可能是单个元素,它可能是一个列表,它可能是一个null等因为这不是一个标识符到资源,但链接到另一个。