簡體   English   中英

Spring Boot Rest API - 輸入文件 + 端點

[英]Spring Boot Rest API - input file + endpoints

我有關於架構的常見問題,我應該用於我的特定問題。

我有包含一些信息的 .TSV 文件,我的任務是創建 REST API 應用程序,該應用程序將使用此 .TSV 文件,並且將有 3 個 REST API 端點。 每個端點都將返回我從 .TSV 文件處理的 JSON 數據。

我的問題是:我是否應該創建一些 POST 方法來上傳 TSV 文件,然后將其保存到會話中並使用 API 端點執行邏輯?

或者我應該在對特定端點的每個請求中將 TFS 文件的內容作為 JSON 發布?

我不知道如何把它們粘在一起。

對數據庫沒有要求。 該程序將僅通過 API 使用大量請求進行測試,我不知道如何在我的應用程序中處理或存儲 .TSV 內容,以便一個用戶可以在相同數據之上按順序調用所有三個端點,而無需重新上傳 TSV 文件。

最好上傳文件,然后在服務器上進行處理。 該文件將在一個請求中上傳,它比發送多個請求更好。

我相信解決方案將取決於文件的大小。 如果文件非常大,將文件存儲在內存中不是一個好方法。 而且,在會話中保存文件可能並不好,因為如果您將來需要擴展您的服務,您將無法做到。 即使將文件存儲在 /tmp 目錄中也可能是一種糟糕的方法,因為該解決方案仍然無法擴展。

使用 AWS S3 或 Google Firebase 或任何其他相關存儲服務是個好主意。 當您調用三個 REST 之一時,您的應用程序將驗證該文件是否尚未處理,讀取該文件,處理您想要的任何內容並將結果保存到您的 S3 存儲桶(如果您不想保存已處理的文件,您可以使用 S3 上的保留策略在 X 時間段后刪除文件)。 只有在此之后,您才會返回結果。 如您所見,這是一個同步解決方案。

如果文件處理需要大量 CPU 並且需要很長時間,您將需要一個異步解決方案。 因此,當您調用 REST API 時,不是直接處理文件,而是必須創建另一個應用程序,該應用程序將從 S3 讀取該文件,對其進行處理並保存。 都是異步的。 而您的 REST API 只會從 S3 獲取文件並返回它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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