Вот как RESTful запрос может выглядеть.
POST /posts/delete_multiple HTTP/1.1
Host: www.example.com
post_ids[]=33&post_ids[]=47&post_ids[]=88
Обратите внимание, что в то время как GET
, PUT
и DELETE
имеют весьма специфические значения в контексте REST, POST
более расплывчатым и по сути означает, что принять какое-либо действие. Действие, которое нужно предпринять, указывается в URL-адресе, а дополнительные данные, относящиеся к действию, передаются в сущности (теле) запроса. Используйте только POST
таким образом, когда GET
, PUT
и DELETE
не имеют предполагаемого значения.
POST
обычно интерпретируется как «создать», но это не совсем правильно. Мы обычно используем POST
для создания новых ресурсов, когда клиент не знает, каким должен быть URL-адрес вновь созданного ресурса. Но когда клиент получает определение URL-адреса вновь созданного ресурса, правильным глаголом будет PUT
.
Данный пример является стиль архитектуры RPC, где предполагаемый операция определяется в URI, а не методом HTTP. Кроме того, POST четко определен в [разделе 9.5] (http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.5) стандарта HTTP. Хотя стандарт указывает, что POST можно использовать для передачи данных в процесс обработки данных, который не делает использование метода POST RESTful. Подход RESTful будет состоять в том, чтобы определить новый ресурс, представляющий коллекцию других ресурсов, а затем удалить эту коллекцию. –
ОК, затем 'POST/posts/batch_deletes' с тем же сущностью. Под-ресурс (ресурс «Post :: BatchDelete») будет создан, но затем будет немедленно запускаться за кадром и мгновенно уничтожаться. Эффект запуска подресурса заключается в том, что все сообщения, перечисленные в этом под-ресурсе, также уничтожаются. – yfeldblum
Но требуя двух запросов на удаление нескольких ресурсов, не успокаивается (в частности, * требование *, что * он должен быть таким образом * не успокаивается). Это просто медленно, потому что для этого требуются два цикла запроса-ответа, а не один. – yfeldblum