2015-08-28 57 views
3

对于Spring Data Rest和Spring来说,我很新。 我使用Spring Data Rest和Spring Data Jpa和Mysql DataBase。Spring Data Rest - 更改项目资源url中使用的实体属性

我无法找到如何更改在URL中用作Id的实体属性。 这里基本上我想要实现:

我有以下实体:Plant(id,code,name,...)

其实我获得使用

GET /plants/:id 

植物资源的项目,我想访问这个资源项目使用:

GET /plants/:code 

Plant.code属性不是五官科官方id但是是唯一的,并且对API的最终用户更有意义。

我已经通过文档和Google/SO搜索过,但还没有找到任何相关答案。

所以原谅我,如果anwser明显

+0

我认为什么构成URI不应该在REST服务中重要,因为根据定义,URI对用户来说是不透明的。客户应该关心的是链接关系。 –

+1

我知道这个论点符合HATEOAS原则,而且我对这个概念很新颖。我的问题实际上是关于将使用API​​的开发人员的学习容易程度,因为它确实更适合应用程序的领域,因为没有人知道和关心作为代理键的ID的价值。 [Github官方API GET repos url](https://developer.github.com/v3/repos/#get)就是一个很好的例子:尽管版本库有一个id,但是他们的名字在url中使用 –

回答

1

你可以添加这样的搜索端点,它返回一个匹配的资源:通过添加以下内容到仓库接口

GET /plants/search/findByCode?code=:code 

你可以这样做:

Plant findByCode(@Param("code") String code); 
+1

这可以工作,但是我不认为使用查询字符串来检索资源是非常干净的。感谢您的回答 –

+0

事实上,我需要遵循我正在进行的项目规范并调整工具。如果使用Spring Data Rest不可能,我会使用@RestController去“手动”的方式。 –

相关问题