[英]Java Spring : Return large string in rest api
我有一個處理服務器端某些庫的 Web 應用程序。 有一個 REST apis 可以從服務器上的這個庫中執行一些函數並返回字符串。
返回的字符串可能非常大 ~ 100k 行。
我在這方面沒有經驗。 我的問題是處理這種情況的正確方法是什么。
目前我正在返回字符串中的所有內容,但我覺得我錯過了一些東西
/**
* POST /do/action
* @param action
*/
@PostMapping("/do/action")
@Timed
public @ResponseBody String doAction(@RequestParam String action) throws URISyntaxException {
return JSONObject.quote(actionService.doAction(action));
}
我認為改善這種情況的一種方法是將其作為 Stream 發送。 它至少會阻止您將所有這些數據加載到 RAM 中。
您還可以考慮壓縮您的響應(例如 gzip)。 它將大大減少數據的大小。
您可以做的下一件事取決於功能方面。 是否可以切斷您的字符串並允許在每個請求中讀取 100 行?
也許您可以向您的 WS 添加 2 個參數:您想要的行數和偏移量。 也許您可以添加一些參數來過濾您不想要的行。 也許每一行都有一個日期,你可以用它來做過濾。 您的目標必須是限制您發送的數據量,並在構建字符串時限制 I/O 或處理。 我不知道您是從數據庫、文件中讀取字符串還是某些計算的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.