<liclass="main"><ahref="#building-hypermedia-apis-with-rest-framework">Building Hypermedia APIs with REST framework</a></li>
</ul>
</div>
</div>
<divid="main-content"class="span9">
<h1id="rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</h1>
<blockquote>
<p>You keep using that word "REST". I do not think it means what you think it means.</p>
<p>— Mike Amundsen, <ahref="http://vimeo.com/channels/restfest/page:2">REST fest 2012 keynote</a>.</p>
</blockquote>
<p>First off, the disclaimer. The name "Django REST framework" was choosen with a view to making sure the project would be easily found by developers. Throughout the documentation we try to use the more simple and technically correct terminology of "Web APIs".</p>
<p>If you are serious about designing a Hypermedia APIs, you should look to resources outside of this documentation to help inform your design choices.</p>
<p>The following fall into the "required reading" category.</p>
<ul>
<li>Fielding's dissertation - <ahref="http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm">Architectural Styles and
the Design of Network-based Software Architectures</a>.</li>
<li>Fielding's "<ahref="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven">REST APIs must be hypertext-driven</a>" blog post.</li>
<li>Leonard Richardson & Sam Ruby's <ahref="">RESTful Web Services</a>.</li>
<li>Mike Amundsen's <ahref="…">Building Hypermedia APIs with HTML5 and Node</a>.</li>
<p>For a more thorough background, check out Klabnik's <ahref="http://blog.steveklabnik.com/posts/2012-02-27-hypermedia-api-reading-list">Hypermedia API reading list</a>.</p>
<h1id="building-hypermedia-apis-with-rest-framework">Building Hypermedia APIs with REST framework</h1>
<p>REST framework is an agnositic Web API toolkit. It does help guide you towards building well-connected APIs, and makes it easy to design appropriate media types, but it does not strictly enforce any particular design style.</p>
<p>It is self evident that REST framework makes it possible to build Hypermedia APIs. The browseable API that it offers is built on HTML - the hypermedia language of the web.</p>
<p>REST framework also includes <ahref="../api-guide/serializers">serialization</a> and <ahref="../api-guide/parsers">parser</a>/<ahref="../api-guide/renderers">renderer</a> components that make it easy to build appropriate media types, <ahref="../api-guide/fields">hyperlinked relations</a> for building well-connected systems, and great support for <ahref="../api-guide/content-negotiation">content negotiation</a>.</p>
<p>What REST framework doesn't do is give you is machine readable hypermedia formats such as <ahref="http://www.amundsen.com/media-types/collection/">Collection+JSON</a> by default, or the ability to auto-magically create HATEOAS style APIs. Doing so would involve making opinionated choices about API design that should really remain outside of the framework's scope.</p>