Существуют ли какие-либо рекомендации по выполнению BATCH-операций через REST для команд POST, PUT, PATCH?
Текущая парадигма, которой я придерживаюсь, заключается в том, что полезная нагрузка JSON указывается в теле для всех трех операций:
a) POST для возврата местоположения созданного ресурса
b) PUT/PATCH возвращает 201, если обновление прошло успешно
Для пакетной операции я намерен принять набор объектов JSON в теле полезной нагрузки, но пытаюсь понять, что вернуть клиенту.
При обработке пакета операция может завершиться успешно для некоторых элементов, но может завершиться ошибкой для других.
Принимая это во внимание, я считаю, что лучше всего возвращать набор объектов, указывающих статус успеха/неудачи каждого элемента из полезной нагрузки.
Но это отклоняется от моей парадигмы, изложенной в пунктах (а) и (б) выше.
Вместо этого имеет ли смысл возвращать клиенту идентификатор, представляющий идентификатор самой пакетной операции?
Затем клиент выполнит последующий запрос GET, чтобы получить результат запрошенной операции.
Такой подход кажется разумным? Если да, имеет ли смысл блокировать клиента при последующем GET, если операция не завершена ИЛИ имеет ли смысл всегда возвращать самое последнее состояние, то есть набор ответов для каждого из элементов, которые клиент запросил для обработки .
Идеи/мысли/предложения?
Поскольку REST — это архитектурный стиль, в котором нет обязательно четких указаний и указаний о том, как должны быть реализованы действия для HTTP-команд, очевидно, что здесь нет правильного или неправильного ответа.
Я ищу решение, которое будет элегантным, естественным и интуитивно понятным.