用于文件 CSV 导入的 API 设计,最佳实践方法?

use*_*445 6 javascript api-design

我需要设计一个 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 示例可用于为设计建模?

spi*_* 王建 1

因为我对javascript不熟悉,所以我的回答将集中在问题1,关于如何设计一个用于导入大量数据的api。一般有两种方式,同步和异步。

同步方式

为了避免将数据导入数据库的漫长等待,我们应该限制每个请求的数据行数。如果用户导入的数据超出限制,前端需要将数据拆分成多个请求。为了更好的用户体验,我们可以显示当前的导入进度。

异步方式

与同步方式相比,异步方式的实现要复杂一些。
1.我们可以将csv或json文件上传到Amazon S3,然后通过api将文件地址发送到服务器。
2.异步worker从s3下载文件后开始将数据导入数据库。为了避免数据库阻塞,我们还要批量导入。3.为了获取导入进度,前端通过api轮询或服务器在导入完成后通知前端。

两种方式都有优点和缺点,您选择哪种方式取决于数据量和实现复杂性之间的权衡。