我目前正在创建一套REST API,这些API将用于将不确定数量的信息行上传到我们的数据库。第三方公司团队的开发人员将使用这些API。
信息量将从每天批量上传约4k行信息开始,估计在大约4个月内最多可增加5k行信息。我的问题是,设计上传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时,我读到了一些想法:
任何意见,建议和想法都将有助于做出设计决策。
答案 0 :(得分:1)
我建议一个可以接受POST
请求的端点。让请求的主体是您选择接受的任何格式的数据的全部批次-JSON,XML,CSV等。让客户端指定Content-Type
标头以指示他们发送信息的格式in。解析该格式以应用这批更改。如果要花一秒钟以上的时间来答复,请立即发送一个202 Accepted
和一个带有端点的Location
标头,他们可以在其中获得有关批处理进展情况的进度报告。 / p>
请注意,您必须决定如何处理其中包含不良条目的上传-整个批次失败或接受您可以接受的一切。
分页可能太过分了。根据您提供的示例,5k条目可能小于一个兆字节吗?权衡一下,以免客户因分页而烦恼。作为客户,我不想这样做。
由于性能成本,要求客户端进行POST 4k次以获取其所有数据可能不是正确的主意。客户端也不太可能希望自己解析数据以编写循环。