创建REST API以允许上传大型数据集

时间:2019-03-06 17:25:13

标签: c# .net rest post

我目前正在创建一套REST API,这些API将用于将不确定数量的信息行上传到我们的数据库。第三方公司团队的开发人员将使用这些API。

信息量将从每天批量上传约4k行信息开始,估计在大约4个月内最多可​​增加5k行信息。我的问题是,设计上传API的最佳方法是什么?

在我写下一些想法之前,我一直在阅读这里要考虑的一些注意事项。

  • 信息上传和这些API的使用几乎总是每天一次。
  • 一行信息的整体结构如下所示,乘以4k。

    "data": [ {"InfoID": 1, "InfoName": "HELLO", "InfoValue": 1.00, "InfoDate": "2019-01-01"}, {"InfoID": 2, "InfoName": "WORLD", "InfoValue": 2.00, "InfoDate": "2019-01-02"} ]

在设计此类API时,我读到了一些想法:

  • 使用页码信息控件限制可以在JSON参数上上传的信息行的数量。这意味着第三方团队在从其数据库中检索和上载信息时必须执行上述分页控制。
  • 上传CSV文件。如果文件太重,这也可以实现文件上传的分页。
  • 一种POST API,可以逐行上传行信息,但我认为对于如此大的数据集,这不是最好的选择。

任何意见,建议和想法都将有助于做出设计决策。

1 个答案:

答案 0 :(得分:1)

我建议一个可以接受POST请求的端点。让请求的主体是您选择接受的任何格式的数据的全部批次-JSON,XML,CSV等。让客户端指定Content-Type标头以指示他们发送信息的格式in。解析该格式以应用这批更改。如果要花一秒钟以上的时间来答复,请立即发送一个202 Accepted和一个带有端点的Location标头,他们可以在其中获得有关批处理进展情况的进度报告。 / p>

请注意,您必须决定如何处理其中包含不良条目的上传-整个批次失败或接受您可以接受的一切。

分页可能太过分了。根据您提供的示例,5k条目可能小于一个兆字节吗?权衡一下,以免客户因分页而烦恼。作为客户,我不想这样做。

由于性能成本,要求客户端进行POST 4k次以获取其所有数据可能不是正确的主意。客户端也不太可能希望自己解析数据以编写循环。