Мы все знаем, что "стандартный" способ удаления одного элемента через REST - отправить один запрос DELETE на URI example.com/Items/666
. Гранд, позвольте перейти к удалению многих сразу. Поскольку мы не требуем атомного удаления (или истинной транзакции, т.е. Всего или ничего), мы могли бы просто сказать, что клиент испытывает трудности, делает много запросов, но это не очень приятно. Таким образом, нам нужен способ, чтобы клиент мог сразу же удалить многие "Элементы".
По моему мнению, "типичным" решением этой проблемы является "двухэтапный" подход. Сначала клиент отправляет список идентификаторов элементов и возвращает URI, например example.com/Items/Collection/1
. После создания этой коллекции они нажимают на DELETE.
Теперь я вижу, что это работает отлично, кроме меня, это плохое решение. Во-первых, вы вынуждаете клиента делать два запроса для размещения сервера. Во-вторых, "Я думал, что DELETE должен был удалить элемент?", Не следует ли удалять DELETE в этом URI, чтобы эффективно отменить транзакцию (это не настоящая транзакция), как бы мы ее отменили? На самом деле было бы лучше, если бы была какая-то форма "EXECUTE", но я не могу так сильно качать лодку. Это также заставляет сервер учитывать "JSON, который был POSTED, больше похож на запрос об изменении этих элементов, но запрос был DELETE... поэтому, я думаю, я удалю их". Этот подход также начинает навязывать свое состояние на клиенте/сервере, а не истинное состояние, которое я допускаю, но это своего рода.
На мой взгляд, лучшим решением было бы просто вызвать DELETE на example.com/Items
(или, возможно, example.com/Items/Collection
, чтобы подразумевать, что это множественное удаление) и передать данные JSON, содержащие список идентификаторов, которые вы хотите удалить. Насколько я вижу, это в основном решает все проблемы, которые был у первого метода. Он проще использовать в качестве клиента, уменьшает работу, которую должен выполнять сервер, по-настоящему без гражданства, более семантический.
Я был бы очень благодарен за это, я пропущу что-то о REST, что делает мое решение этой проблемы нереалистичным? Я также ценю ссылки на статьи, особенно если они сравнивают эти два метода; Я знаю, что это нормально не одобрено для SO. Мне нужно уметь опровергнуть, что только первый метод действительно RESTfull, докажите, что второй подход является жизнеспособным решением. Конечно, если я лаю, то неправное дерево скажу мне.