簡體   English   中英

Java Spring:在rest api中返回大字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM