AFAIK Fielding не утверждал, что REST - это хорошо, он просто описывал фактическую архитектуру сети.
Я думаю, это немного недооценивает это. В конце концов, REST - это перечисление архитектурного стиля, который Филдинг использовал в качестве главного архитектора спецификации HTTP / 1.1 .
Но есть ли причина думать, что REST является желательной архитектурой для этого домена? Есть ли доказательства того, что HATEOAS - это выгодный принцип проектирования межмашинных коммуникаций?
"По-разному". HATEOAS является частью ограничения интерфейса REST.
Применяя принцип общности разработки программного обеспечения к интерфейсу компонента, общая архитектура системы упрощается и улучшается видимость взаимодействий. Реализации отделены от предоставляемых ими услуг, что способствует независимому развитию. Компромисс, однако, заключается в том, что унифицированный интерфейс снижает эффективность, поскольку информация передается в стандартизированной форме, а не в той, которая специфична для потребностей приложения. Интерфейс REST спроектирован так, чтобы быть эффективным для передачи крупномасштабных гипермедиа-данных, оптимизируя его для общего случая Интернета, но в результате получая интерфейс, который не оптимален для других форм архитектурного взаимодействия.
Итак, давайте немного подумаем о том, что это значит. Когда у меня возникают проблемы с моим беспроводным маршрутизатором, я могу общаться с ним с помощью того же браузера, который я использую для отправки ответов на stackexchange. В частности, не имеет значения, какой браузер я использую или какой браузер на несколько обновлений отстает (или опережает) от того, что ожидает маршрутизатор. Неважно, что инженерная организация, написавшая браузер, полностью независима от организации, создавшей интерфейс маршрутизатора.
Это просто работает .
Это, конечно, не универсально. Филдинг в 2008 году писал:
Это не значит, что я думаю, что каждый должен проектировать свои собственные системы в соответствии с архитектурным стилем REST. REST предназначен для долгоживущих сетевых приложений, которые охватывают несколько организаций. Если вы не видите необходимости в ограничениях, не используйте их.
Ограничения, которые формируют архитектурный стиль REST, были выбраны для свойств, которые они вызывают; если эти свойства не являются ценными для вашего варианта использования, то вам следует подумать об отмене соответствующих ограничений.
Когда машина к машине становится трудной, это то, что вы потеряли способность человека нечетко соответствовать семантике, предоставляемой представлениями. Клиенты могут обойтись, зная только типы медиа, но у нас обычно есть человек, который смотрит на смысловые сигналы, чтобы получить смысл.
schema.org - это часть усилий по созданию машиночитаемого словаря; Агенты машины используют клиента для поиска семантических подсказок и применяют свое собственное понимание значения, чтобы выбрать правильные действия.
Но это работа; вам необходимо инвестировать в разработку машинно-ориентированных представлений ваших ресурсов и обеспечивать, чтобы эти представления оставались прямыми и обратно совместимыми, чтобы клиенты могли развиваться независимо.
Когда одна организация контролирует и клиента, и сервер, преимущества этой независимости намного меньше, и в этом случае ограничение может не подходить для архитектуры.