Было бы лучше использовать непозиционный идентификатор, такой как UUID, для элементов коллекции, чтобы избежать таких проблем, как изменение URL-адреса элемента при удалении предшествующего ему элемента. (Конечно, вы все равно можете использовать itemN
или просто N
, если число всегда остается привязанным к одному и тому же элементу, оставляя пробелы после удалений, но UUID менее запутан.)
У коллекции есть URL /service/items/
. Каждый элемент имеет URL /service/items/<id>
.
- Создание элементов и коллекций - это POST на родительском ресурсе.
- Вы можете использовать PUT, если клиент имеет право и возможность генерировать имя или идентификатор ресурса.
- Удаление элементов и коллекций - это УДАЛЕНИЕ на самом ресурсе.
- Добавление нескольких элементов - это либо несколько POST, либо POST из нескольких элементов на родительском объекте (коллекции).
- Удаление нескольких элементов - УДАЛЕНИЕ на каждом ресурсе. Я бы не рекомендовал УДАЛИТЬ несколько элементов по двум причинам:
- Массовое удаление является опасной операцией (по этой причине я бы также не рекомендовал УДАЛИТЬ непустую коллекцию).
- Единственная значимая цель операции - родительская коллекция, что делает массовое DELETE асимметричным по отношению к элементу DELETE.
Если вам действительно нужна возможность массового удаления, предоставьте ее через другой, четко обозначенный API, такой как PURGE /service/items.