2016-11-20 46 views
2

Spring數據REST對我來說工作得非常好,但我需要能夠限制用戶在創建特定資源時可能提供的參數。例如,用戶不應該能夠指定分配給創建資源的ID或帳戶的激活狀態,假設。建議在Spring Data REST中禁止創建某些屬性的方法?

我到目前爲止的做法是簡單地在資源庫@HandleBeforeCreate事件處理程序中手動清除或重置這些字段。是否有另一個更聰明的選項來限制資源的接受POST數據?

另外,有些情況下CRUD調用需要指定額外的上下文屬性,這些額外的上下文屬性不是目標資源的明確部分,但可以在創建資源的過程中使用。處理這種情況的適當方式是什麼?

+0

如果您正在使用Jackson進行serilization,請嘗試使用JsonIgnore註釋屬性及其設置器,並使用JsonGetter註釋getter。我使用這個技巧來防止PUTing或爲屬性修補一個新的值。我還沒有嘗試POST,但我認爲它也可以。 –

回答

0

您可以通過執行org.springframework.validation.Validator並覆蓋validate(Object object, Errors errors)來定義自定義驗證器,並驗證輸入字段,然後根據輸入請求對象的要求填充字段或進行必要的更改。

例如,您可以參考here瞭解更多詳情,也可以參考here