Чтобы сначала ответить на вопрос заголовка, часть удаления для поведения POST не является идиоматической, поскольку POST обычно не предназначен для замены, НО я не верю, что это строго запрещено, поэтому в зависимости от вашей ситуации (как описано ниже),POST или PUT оба являются приемлемыми подходами.
Когда ваш случай должен использовать PUT:
Если вы знаете идентификатор, тогда вам лучше всего сделать:
PUT /your/resource/path/<id>
Почему: POST означает больше строго для нового создания ресурса.По моему мнению, PUT чаще используется в ситуациях, когда вы хотите «создать или заменить», что соответствует вашим требованиям настолько близко, насколько вы получите.
Вот хороший источник, который обсуждает и поддерживает то, что яговорю:
PUT против POST в REST
И хороший отрывок:
Метод PUT запрашивает, чтобы вложенный объектхраниться под предоставленным Request-URI.Если Request-URI ссылается на уже существующий ресурс, вложенный объект СЛЕДУЕТ рассматривать как модифицированную версию, находящуюся на исходном сервере.Если Request-URI не указывает на существующий ресурс и этот URI может быть определен как новый ресурс запрашивающим пользовательским агентом, сервер-источник может создать ресурс с этим URI. "
Когда ваш случай должен использовать POST:
Если ваш идентификатор генерируется на бэкэнде и / или вы не знаете, как определить ресурс при создании, то для всехсоответствующие цели вы создаете новый ресурс в том, что касается использования вами REST, поэтому вы должны использовать POST. Вы можете столкнуться с каким-то изворотливым внутренним поведением, которое некоторые утверждают, что смерть нарушает REST, но в этом случае нет лучшей альтернативы, кроме переосмысления вашего решения в его основе.
Заключительное примечание:
Если вы не знаете идентификатор всоздание, то вы не могли бы даже вернуться к УДАЛИТЬ → (пере) POST, потому что для УДАЛИТЬ, вы должны ориентироваться по идентификатору. И если вы удаляете без идентификатора, то у вас есть другие "это идиоматический" quответы на вопросы.