2017-02-28 27 views
5

我想在Spring(SpringBoot)應用程序中將數據從數據庫公開爲Restful API。 Spring Data Rest似乎完全適合本次活動的目的。Spring數據休息 - 有沒有辦法限制支持的操作?

此數據庫對於我的應用程序需求是隻讀的。默認提供所有的HTTP方法。有沒有一種配置可以用來限制(實際上阻止)其他方法被暴露?

+3

最方便的方法是使用Spring安全性來阻止除GET請求以外的所有內容。 SDR確實提供了這方面的功能:http://docs.spring.io/spring-data/rest/docs/current/reference/html/#customizing-sdr.hiding-repository-crud-methods但是在HTTP級別處理通過Spring Security更簡單。 –

回答

12

從春天文檔上Hiding repository CRUD methods

16.2.3。隱藏庫的CRUD方法

如果你不希望暴露保存或在您 CrudRepository刪除方法,你可以使用@RestResource(出口= FALSE) 設置通過覆蓋要關閉的方法和配售重寫版本上的 註釋。例如,爲防止HTTP 用戶調用CrudRepository的刪除方法,請覆蓋它們的所有 並將該註釋添加到重寫方法。

@RepositoryRestResource(path = "people", rel = "people") 
interface PersonRepository extends CrudRepository<Person, Long> { 

    @Override 
    @RestResource(exported = false) 
    void delete(Long id); 

    @Override 
    @RestResource(exported = false) 
    void delete(Person entity); 
} 

這是你會覆蓋刪除方法作爲出口 重要的當前使用一個有點天真算法determing其CRUD 方法更快的運行時性能的興趣使用。當前不可能使用 來關閉刪除版本,該版本需要ID ,但保留導出需要實體實例的版本。對於 ,您可以導出刪除方法或不導出。如果您想要關閉它們,請記住您必須註釋 版本與導出= false。

+0

如果您正在閱讀本文,您應該考慮投票選票。 SDR可能很危險。 https://jira.spring.io/browse/DATAREST-1034 – Snekse

相關問題