То, что вы пытаетесь сделать, можно сделать ОТДЫХА.Хотя POST обычно используется для добавления одного объекта в коллекцию, его также можно использовать для отправки фрагмента данных в «ресурс обработки данных».Это в значительной степени открывает двери для того, чтобы делать с POST все, что вы хотите.
Люди часто неправильно понимают ограничения REST и считают, что вы ДОЛЖНЫ использовать PUT и DELETE, чтобы быть RESTful.Это не вариант.Нет необходимости использовать все методы.Единственное требование - не злоупотреблять теми, которые вы используете.
Очевидно, что для пользователя вашего API будет более интуитивно понятно, если вы поместите один объект в коллекцию для создания объекта.Однако, если этот вариант не подходит для вас, вы можете определить новый тип носителя, который может содержать набор объектов, которые будут созданы / обновлены каким-либо ресурсом обработки данных.
Важно, чтобыявно об этих правилах.Вы должны создать новый тип носителя, например application/vnd.yourcompany.objectlist+xml
, и вам нужно написать документацию о том, как должен быть структурирован этот тип носителя.
Теперь, когда вы определили тип носителя, ваш клиент должен будет знать, гдеРАЗМЕСТИТЬ этот список объектов.В идеале вы должны определить новое отношение ссылки (например, objectprocessor
), которое можно использовать в других документах для предоставления URL-адреса для POST.В документе спецификации этого отношения Link вы должны объяснить разработчикам клиента, что когда вы публикуете application/vnd.yourcompany.objectlist+xml
для ссылки, которая имеет отношение ссылки objectprocessor
, то произойдут x, y и z.
Предполагая, что ваш корневой URL-адрес возвратил какой-то документ XHTML, такой как:
<html>
<h1>My awesomely restful service that can create objects in batches</h1>
<link rel='objectprocessor' href='http:/example.org/myservice/objectprocessor'/>
</html>
Клиентское приложение может обработать этот документ, обнаружить эту ссылку и понять, основываясь на определении отношения ссылки, которое необходимо для POST aapplication/vnd.yourcompany.objectlist+xml
до конечной точки, указанной в href.
Таким образом, сообщение полностью самоописательно, вы взаимодействуете с ресурсами, идентифицированными с URL-адресами, которые можно обнаружить, и вы находитесь в рамках правил единого интерфейса.