Я бы предложил одну конечную точку, которая принимает POST
запросов.Пусть тело запроса будет представлять собой весь пакет данных в любых форматах, в которых вы его принимаете - JSON, XML, CSV и т. Д. Попросите клиентов указать заголовок Content-Type
, чтобы указать, в какой формат они отправляют информацию.Разобрать этот формат, чтобы применить пакет изменений.Если для ответа потребуется более секунды или около того, отправьте 202 Accepted
прямо сейчас и заголовок Location
с конечной точкой, где они могут получить отчет о ходе выполнения пакетной обработки.
Обратите внимание, что вам придется решить, как обрабатывать загрузки, в которых есть некоторые неверные записи - либо потерпеть неудачу во всем пакете, либо принять то, что можете.
Возможно, разбиение на страницы является излишним.Исходя из приведенного вами примера, 5 000 записей, вероятно, меньше, чем один мегабайт?Взвесьте это в противовес раздражению клиента, вынужденного заниматься пагинацией.Как клиент, я бы не хотел этого делать.
Требовать от клиентов POST 4k раз, чтобы получить все свои данные, вероятно, не лучшая идея из-за снижения производительности.Также маловероятно, что клиенты захотят сами проанализировать данные для записи цикла.