2015-08-28 55 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去「手動」的方式。 –

相關問題