我正在開發Web服務的RESTful API。我需要公開一些不屬於實體本身的屬性。將定製屬性添加到序列化對象
例如我有一個Pizza
實體對象,它具有它自己的size
和name
屬性。我與FOSRestBundle和JMSSerializer輸出它以JSON格式。我已經爲此實體設置了屬性註釋,以通過序列化組來顯示所需的屬性,並且它工作得很好。
但我要補充一點,不屬於實體本身的一些屬性。例如,我希望我的pizza
擁有由某個PizzaService::isFresh(Pizza $pizza)
服務確定的屬性:isFresh
。我該怎麼做呢?
- 我是否應該爲序列化過程注入一些額外的邏輯(如果是的話)?
- 我應該創建,我想從原來的實體以及附加外部屬性公開性質的包裝實體?
- 我應該添加屬性
isFresh
到原來Pizza
實體和系列化之前控制器填充嗎? - 我是否應該返回獨立於實體數據的附加數據(例如,在兄弟JSON屬性中)?
換句話說:什麼是解決這個問題的最佳做法是什麼?你能提供一些例子嗎?謝謝。
這個問題也是關於這個虛擬財產依賴於服務,似乎這只是答案的一部分。也許你可以設想一個方法來實現呢? – kix
是的,你有權利。我認爲「我應該將屬性isFresh添加到原始Pizza實體並在序列化之前在控制器中填充?」是更好的解決方案。爲此,我使用Accessor註釋添加另一種方式 – griotteau
嘿,謝謝你的回答。你爲什麼認爲這種方法更好?其他方法的缺點是什麼?你在實踐中實現了這個設計嗎? –