Правило REST API о туннелировании

11

Просто прочитайте это в REST API Rulebook : GET и POST не должны использоваться для туннелирования других методов запроса .

Туннелирование относится к любому злоупотреблению HTTP, которое маскирует или искажает намерения сообщения и подрывает прозрачность протокола. API-интерфейс REST не должен ставить под угрозу его конструкцию, неправильно используя методы запросов HTTP, пытаясь приспособить клиентов с ограниченным словарным запасом HTTP . Всегда правильно используйте методы HTTP, как указано в правилах в этом разделе. [основные моменты мной]

Но тогда многие фреймворки используют туннелирование для предоставления интерфейсов REST через HTML-формы, поскольку <form>знают только о GETи POST. Мой самый последний пример - это MethodRewriteMiddlewareфляга (предоставлена ​​автором фреймворка): http://flask.pocoo.org/snippets/38/ .

Есть ли способы соответствовать «Правилу» без хаков или надстроек в веб-фреймворках?

Мик
источник

Ответы:

4

Нет, нет Так что, если вам нужно, нарушите правило в любом случае.

Я не знаю, в чем дело. Протоколы инкапсулируют другие протоколы все время. TCP / IP, например, имеет четыре уровня такой абстракции .

Конечно, лучший путь для клиентов - использовать программу и правильно поддерживать глаголы HTTP. Но это не идеальный мир.

Роберт Харви
источник
Спасибо, хорошо, все делают это в любом случае (и другие протоколы делают это специально, как вы упомянули). Я просто был немного удивлен, обнаружив, что «правило» записано так четко.
Мику