Ответ 1
Следуя ограничению интерфейса REST Uniform Interface, методы HTTP PUT
и PATCH
должны придерживаться стандартной семантики, поэтому вы можете сделать это с помощью одного из следующих способов:
С PUT
клиенты могут загружать все новое представление в желаемом порядке. Они запросят GET /api/v1/items
, измените порядок по мере необходимости и верните его с помощью PUT /api/v1/items
.
С помощью PATCH
клиенты могут отправить документ diff, который выполняет изменение заказа по мере необходимости. Вы можете использовать формат json-patch, и клиенты выполняют изменения с помощью операций move
и массивов.
Имейте в виду, что ни один из них не является образцом дизайна или передовой практикой. Они просто как методы PUT
и PATCH
должны работать. В идеале это должно работать над любым RESTful-приложением, правильно использующим методы GET
, PUT
и PATCH
для ресурса в этом URI, и что красота REST. Если вы сделаете это правильно, вам нужно сделать это только один раз, и клиенты могут обобщить для всех. Например, клиент может выбрать способ PUT
с небольшими коллекциями и PATCH
для более крупных.
Обе вашей идеи использовать PATCH
с массивом id, а answerfrom @dit, предлагающий сделать это с помощью PUT
, на самом деле не являются RESTful, потому что они ломаются со стандартной семантикой: для вас не используется дельта format, его для частичных обновлений с помощью PUT
. Однако оба эти параметра могут быть RESTful, если выполнены с помощью POST
. POST
- это метод для любого действия, которое не стандартизировано протоколом HTTP, поэтому вы можете делать с ним все, что хотите, но вам нужно документировать, как именно это сделать.
Итак, это вам. Если вы вообще обеспокоены тем, что являетесь RESTful, и ваша заявка имеет долгосрочные цели - я говорю годы или даже десятилетия - я бы сказал, чтобы пойти на единообразную реализацию методов PUT
и PATCH
, как было предложено первый. Если вы предпочитаете простой подход, используйте свою или идею с помощью POST
.