我有一個場景,我想在實現和嘗試不同的解決方案之前獲得更廣泛的意見。流媒體REST響應與坐落流
我正在執行的REST服務將提供包含多個二進制數據字段和簡單字符串的模型。一個簡單的方法就是實現包含我的String,byte []字段的POJOS等。然後,Jackson將使用base64將其序列化。小菜一碟。
但我想爲此服務作爲一個流。二進制字段將非常龐大,並且已經作爲從我的服務中的另一個外部資源傳入的流進行處理。因此,將它們讀入字節數組,然後讓jackson將它們轉換爲base64將會帶來不可接受的性能影響。
也許我可以簡單地在我的POJO中有OutputStream對象。這是否會讓傑克遜流過它(而編碼爲base64),還是隻是首先讀取整個流?也許傑克遜根本不支持這個?
另一種選擇可能是使用多部分響應,但不確定Jersey是否也不會緩衝它?
或者唯一的方法是使用某種自定義傑克遜串行器? 我可以使用StreamingOutput來執行此操作嗎?
如果它只是一個blob,我會簡單地將它作爲一個八位字節流返回並且很高興,但正如前面提到的,我有一個包含幾個二進制和非二進制字段的數據模型,我真的很想將它全部返回在一個電話。
那麼你說什麼?什麼是最簡單/最好的方式來實現我的目標?