REST, гипермедиа и HATEOAS¶
Вы продолжаете использовать это слово «REST». Я не думаю, что оно означает то, что вы думаете, что оно означает.
‒ Майк Амундсен, REST fest 2012 keynote.
Во-первых, отказ от ответственности. Название «Django REST framework» было принято еще в начале 2011 года и было выбрано просто для того, чтобы разработчики могли легко найти проект. Во всей документации мы стараемся использовать более простую и технически корректную терминологию «Web API».
Если вы серьезно относитесь к разработке Hypermedia API, вам следует обратиться к ресурсам за пределами этой документации, чтобы помочь в выборе дизайна.
Следующее относится к категории «обязательного чтения».
Диссертация Роя Филдинга - Architectural Styles and the Design of Network-based Software Architectures.
Запись в блоге Роя Филдинга «:doc:`REST APIs must be hypertext-driven <https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven>`».
Леонард Ричардсон и Майк Амундсен RESTful Web APIs.
Майка Амундсена Building Hypermedia APIs with HTML5 and Node.
Стив Клабник Designing Hypermedia APIs.
Richardson Maturity Model.
Более подробную информацию можно найти в статье Клабника Hypermedia API reading list.
Создание гипермедийных API с помощью REST-фреймворка¶
Фреймворк REST является независимым набором инструментов для создания Web API. Он помогает ориентироваться в создании хорошо связанных API и облегчает разработку соответствующих типов носителей, но не обеспечивает строгого соблюдения какого-либо определенного стиля оформления.
Что предоставляет фреймворк REST.¶
Само собой разумеется, что REST framework позволяет создавать гипермедийные API. Просматриваемый API, который он предлагает, построен на HTML - гипермедийном языке Интернета.
REST framework также включает serialization и parser компоненты, которые облегчают создание соответствующих типов медиа, hyperlinked relations для построения хорошо связанных систем, и большую поддержку content negotiation.
Чего не предоставляет REST-фреймворк.¶
Что REST framework не делает, так это не дает вам машиночитаемых гипермедийных форматов, таких как HAL или HTML microformats по умолчанию, или возможности автоматически создавать API в стиле HATEOAS, которые включают гипермедийные описания форм и семантически маркированные гиперссылки. Это потребует принятия решений о дизайне API, которые должны оставаться за рамками фреймворка.