Не уверен, правильно ли я вас понимаю, но, просто взглянув на это, я могу подумать только о следующем: какая ужасная вещь - выполнить добавление, которое в зависимости от того, что было добавлено, выполняет удаление.Неуважение, но серьезно.Или, может быть, именно так вы это описываете.
Как бы то ни было, если вы хотите иметь RESTful API, вы должны относиться к GET и PUT по-разному.
Я не думаю, что у вас есть четкая картина варианта использования того, как ваш API (или ваша система в этом отношении должна быть выполнена). Я бы предложил изменить эту модель следующим образом:
Определите URI для своего ресурса, скажем / random-items
a GET /random-items
, в котором вы получаете от 0 до 10 элементов, находящихся в настоящий момент в системе.
a PUT/random-items
с пустым телом выполняет следующие действия:
- удаляет все случайные элементы, добавленные вчера или ранее
- добавляет столько случайных элементов, сколько необходимо длязавершить 10
вызов DELETE /random-items
) должен вернуть 405 Method Not Allowed
http код ошибки.
вызов POST
/ random-items` следует добавить не более 10 элементов, удаляя по мере необходимости.
/random-items/x
является действительным URI, если x является одним из элементов, находящихся в данный момент в /случайные элементы.
- A
GET
должен вернуть ему представление или 404, если он не существует - A
DELETE
, чтобы удалить его из-под /random-items
или 404если он не существует - A
PUT
, ему следует изменить его значение, если оно имеет смысл (или вернуть 405
) - A
POST
, которое должно вернуть 405
всегда
Это должно дать вам RESTful API скелета сорта.
Однако, если вы настаиваете, или вам нужно перегрузить GET, чтобы он выполнял дополненияи удаления за сценой, тогда вы делаете это без RESTful.
Это само по себе неплохо, если вы законно в этом нуждаетесь (поскольку ни одна архитектурная парадигма не является универсально применимой.) Но вам нужнопонять, что означает RESTful и когда / почему / как его сломать.