Ответ 1
Я использую LINK
и UNLINK
в моем (на заказ, внутри компании) веб-приложении. Я использую http://tools.ietf.org/html/draft-snell-link-method как ссылку на реализацию.
Я обнаружил, что существует три типа клиентов:
- Те, которые поддерживают только
GET
иPOST
, беря свои реплики из элемента HTML<form>
. - Те, которые поддерживают только
GET
,PUT
,POST
иDELETE
. Они берут свои сигналы от API-интерфейсов CRUD и RPC-претензий к REST. - Те, которые разрешают любой метод. Публикация
PATCH
в качестве официального RFC увеличила их количество, равно как и рост WebDAV, хотя иногда клиенты категории 2 поддерживаютPATCH
.
Поскольку мы в настоящее время разрабатываем наших клиентов внутри компании, у нас нет этой проблемы, но я изучил ее и рассматривал плюсы и минусы до определения моего API, если мы действительно хотим разрешить сторонние клиенты. Мое решение (так как в любом случае нам нужно было поддерживать HTML-клиент без Javascript) было позволить POST
переопределить метод, указав поле _METHOD
(application/x-www-form-urlencoded
), а затем на моей внутренней стороне > выкл к соответствующей функции для предполагаемого метода HTTP. Таким образом, любой клиент в будущем, который находится, скажем, в классе 2 выше, может использовать PUT
и DELETE
, но обернуть PATCH
, LINK
и UNLINK
в запросе POST
. Вы получаете лучшее из обоих миров: богатые методы от клиентов, которые его поддерживают, и все же поддерживают низкокачественные клиенты через POST-туннелирование.