[英]Best practice when returning from Restful services - returning Java Object vs returning manually constructed JSON
我目前正在研究返回的寧靜 web 服務,比如List<ConfidentialData>
。 (我使用這個ConfidentialData
作為這個問題的例子)
假設這個ConfidentialData
定義如下:
@Getter
@Setter
public class ConfidentialData {
private Integer id; // unique-identifier
private String data;
private String creationDate;
private String approvalDate;
}
現在,我使用 jackson 在幕后將此List<ConfidentialData>
轉換為 JSON 並將其作為Response
發送。
現在,UI 中的不同組件需要不同的 state 的ConfidentialData
。 假設我的一個 UI 頁面(比如 page1)需要純ConfidentialData
object(在 JSON 中沒有任何其他成員),而另一個頁面(比如 page2)需要ConfidentialData
object 以及一些其他成員(假設這些成員與ConfidentialData
。這些統計數據並不真正屬於ConfidentialData
object,而是在 page2 要求時添加)。
我對 go 有 3 個選項:
ConfidentialData
組合,我最終會膨脹我的域對象。ConfidentialData
域 object 添加任何其他成員)
ConfidentialData
相關的統計數據,計算這些統計數據的計算成本很高。 我不希望我的簡單 API 調用來完成所有這些計算,當 UI 永遠不會使用它時(例如,在 page1 的情況下)我可以看到第一種和第二種方法的明顯缺點。 我的問題是,在處理這種情況的寧靜服務方面,有什么好的做法。
為什么不操縱 JSON:
JsonArray
進行過濾,而不是簡單地過濾List<ConfidentialData>
。ConfidentialData#getId()
進行(而且這永遠不會改變),我可以考慮繼續使用基於 JSON 的方法,目前在可擴展性方面看起來很有希望。我可以將其視為操作 JSON 和創建多個域對象之間的權衡。 行業內是否有任何標准來處理這種情況?
根據調用服務的方式,您可以僅填充ConfidentialData
的相應屬性,而其他屬性保持不變。 在序列化期間,您可以省略任何未設置的屬性。 這可以通過提供適當的序列化庫元數據來實現,無論是 Jackson 還是 Gson。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.