簡體   English   中英

用於文件 CSV 導入的 API 設計,最佳實踐方法?

[英]API design for file CSV import, best practice approach?

我需要設計一個 REST API 來導入一個包含 30 列的員工 CSV 文件。 文件中的記錄數可能因業務規模而異,可能是 10,可能是 5000。

這是我的設計方法

  • POST /Employees - 將添加一個員工記錄(將有 30 個屬性)
  • POST /Employees?bulk - 將接受具有多個員工記錄的 JSon。 在這種情況下,用戶可以通過傳遞 json 對象來添加一條記錄。
  • Post /Employees?file - API 將接受 CSV 文件(特定大小),解析和處理將在服務器上完成。

在前兩個選項的情況下,用戶應該在發送之前讀取 CSV 並轉換為 JSON。

問題

  • 這是最佳實踐設計嗎?
  • 我應該提供 javascript 庫來讀取 CSV 並轉換為可接受的 json 格式嗎? 什么時候提供 JavaScript 庫?
    • 是否有任何此類 API 示例可用於為設計建模?

因為我對javascript不熟悉,所以我的回答將集中在問題1,關於如何設計一個用於導入大量數據的api。 一般有兩種方式,同步和異步。

同步方式

為了避免長時間等待將數據導入數據庫,我們應該限制每個請求的數據行數。 如果用戶導入的數據超過限制,前端需要將數據拆分成多個請求。 為了更好的用戶體驗,我們可以顯示當前的導入進度。

異步方式

與同步方式相比,異步的實現要復雜一些。
1.我們可以將csv或json文件上傳到Amazon S3,然后通過api將文件地址發送到服務器。
2.異步worker在s3down文件后開始將數據導入數據庫。 為了避免數據庫阻塞,我們還得批量導入。 3.為了獲取導入進度,在導入完成后,前端通過api輪詢或服務器通知前端。

兩種方式各有利弊,您選擇哪種方式取決於數據量和實現復雜性之間的權衡。

暫無
暫無

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

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