我目前正在创建一套 REST API,用于将不确定数量的信息行上传到我们的数据库。这些 API 将由第三方公司团队的开发人员使用。
\n\n信息量将从每日批量上传约 4k 行信息开始,预计在约 4 个月内增加最多 5k 行信息。我的问题是,设计上传 API 的最佳方法是什么?
\n\n在我写下一些想法之前,我\xe2\x80\x99已经阅读了这里的一些需要考虑的注意事项。
\n\n一行信息的整体结构如下所示,乘以 4k。
\n\n"data": [\n {"InfoID": 1, "InfoName": "HELLO", "InfoValue": 1.00, "InfoDate": "2019-01-01"}, \n {"InfoID": 2, "InfoName": "WORLD", "InfoValue": 2.00, "InfoDate": "2019-01-02"}\n]
我在设计此类 API 时读到的一些想法是:
\n\n任何意见、建议和想法都有助于做出设计决策。
\n我建议使用一个接受POST请求的端点。让请求正文成为整批数据,采用您选择接受的任何格式 - JSON、XML、CSV 等。让客户端指定标头Content-Type以指示他们发送信息的格式。解析出该数据格式以应用批量更改。如果需要超过一秒左右的时间才能回复,请202 Accepted立即发送一个Location带有端点的标头,他们可以在其中获取有关批处理进展情况的进度报告。
请注意,您必须决定如何处理包含一些错误条目的上传 - 要么使整个批次失败,要么接受您可以接受的。
分页可能有点矫枉过正。根据您给出的示例,5k 条目可能还不到 1 MB?权衡这一点与客户必须处理分页的烦恼。作为客户,我不想这样做。
由于性能成本,要求客户端 POST 4k 次才能获取所有数据可能不是正确的想法。客户端也不太可能想要自己解析数据来编写循环。