У меня есть веб-служба RESTful, которая предоставляет ресурс, который позволяет вам (зарегистрированному пользователю) нравится или не похоже на сообщение в блоге. Мой вопрос: каков RESTfully правильный способ выразить этот ресурс?Какой HTTP-глагол подходит для установки логического?
Мой первый удар выглядит следующим образом:
PUT /likes/<blog_entry_id> # marks this blog entry as liked
DELETE /likes/<blog_entry_id> # marks this blog entry as not liked
Этот семантический, по крайней мере в соответствии с требованиями идемпотентности PUT и DELETE (то есть повторяющиеся вызовы PUT не имеют никакого эффекта, если не вперемешку с удалений, и наоборот).
Существует ли более традиционный дизайн для управления булевым HTTP-ресурсом?
Он мог, но его просьба идемпотент. Использование метода non-idempotent HTTP, когда вы делаете идемпотентный запрос, делает ваш запрос менее «видимым». –
Я думаю, что PUT также не является idempotent (не проверял это в spec, хотя, но если он идемпотент, его невозможно будет использовать для обновлений. Правильно?) Поэтому я не вижу разницы с этой точки зрения, чтобы использовать PUT или POST. Поскольку он будет «создавать как», он выглядит как POST для меня. – Tarlog
PUT является идемпотентным. http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html Похоже, вы путаете «безопасный» и «идемпотентный». PUT не является «безопасным».Вы можете использовать PUT для создания вещей. –