<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: REST APIs must be hypertext-driven</title>
	<atom:link href="http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven/feed" rel="self" type="application/rss+xml" />
	<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven</link>
	<description>musings of Roy T. Fielding</description>
	<lastBuildDate>Thu, 21 May 2009 18:54:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: mikek</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-958</link>
		<dc:creator>mikek</dc:creator>
		<pubDate>Mon, 24 Nov 2008 09:48:13 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-958</guid>
		<description>Roy,

How is HATEOAS possible if markup doesn&#039;t adequately support protocol transactions?

Regards,
Mike</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>How is HATEOAS possible if markup doesn&#8217;t adequately support protocol transactions?</p>
<p>Regards,<br />
Mike</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: colinjack</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-957</link>
		<dc:creator>colinjack</dc:creator>
		<pubDate>Sun, 23 Nov 2008 22:36:26 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-957</guid>
		<description>Hi Roy,

Earlier on you speculated about why people find the HATEOS idea so difficult to follow. My view is it&#039;s caused by the lack of good examples and/or a good book.

It might be worth contrasting it with DDD, in my view similiarly complex and also looking at designing simple software with a long term viewpoint. 
As with anything DDD suffers from misunderstandings and people sometimes focus too much on the unimportant aspects.However overall things are in a much better state than they are with REST and I think that&#039;s largely because Evans&#039; book really focusses the mind and describes real world examples that illustrate why his ideas are important. Similiarly the published code/design examples give people something to focus on.

However when it comes to REST a lot of content available on the Web, even from true REST experts, is quite unhelpful to newcomers. In fact *good* REST examples and discussions were thin on the ground until recently, probably fuelling the incessant squabbling and more recently the hijacking of REST (including WOA).

As I say recently we&#039;ve had some realistic examples (I&#039;m thinking in particular of http://www.infoq.com/articles/webber-rest-workflow, even though you might not consider it RESTful) but I certainly think that a lot more could be done and that perhaps a good book is in order? :)

Just my 2c as someone whose gradually coming to appreciate REST after many months of trying to get to grips with the great ideas behind it.

Thanks,

Colin</description>
		<content:encoded><![CDATA[<p>Hi Roy,</p>
<p>Earlier on you speculated about why people find the HATEOS idea so difficult to follow. My view is it&#8217;s caused by the lack of good examples and/or a good book.</p>
<p>It might be worth contrasting it with DDD, in my view similiarly complex and also looking at designing simple software with a long term viewpoint.<br />
As with anything DDD suffers from misunderstandings and people sometimes focus too much on the unimportant aspects.However overall things are in a much better state than they are with REST and I think that&#8217;s largely because Evans&#8217; book really focusses the mind and describes real world examples that illustrate why his ideas are important. Similiarly the published code/design examples give people something to focus on.</p>
<p>However when it comes to REST a lot of content available on the Web, even from true REST experts, is quite unhelpful to newcomers. In fact *good* REST examples and discussions were thin on the ground until recently, probably fuelling the incessant squabbling and more recently the hijacking of REST (including WOA).</p>
<p>As I say recently we&#8217;ve had some realistic examples (I&#8217;m thinking in particular of <a href="http://www.infoq.com/articles/webber-rest-workflow" rel="nofollow">http://www.infoq.com/articles/webber-rest-workflow</a>, even though you might not consider it RESTful) but I certainly think that a lot more could be done and that perhaps a good book is in order? <img src='http://roy.gbiv.com/untangled/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Just my 2c as someone whose gradually coming to appreciate REST after many months of trying to get to grips with the great ideas behind it.</p>
<p>Thanks,</p>
<p>Colin</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jay G.</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-888</link>
		<dc:creator>Jay G.</dc:creator>
		<pubDate>Fri, 14 Nov 2008 14:56:00 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-888</guid>
		<description>Hi Roy,

The first bullet says &quot;REST API should not be dependent on any single communication protocol.&quot; and &quot;In general, any protocol element that uses a URI for identification must allow any URI scheme to be used for the sake of that identification.&quot;

If I understand it correctly, when I design a media type, I should not restrict URIs to a limited set of URI schemes. However, HTML doesn&#039;t define  how user agents can handle a form tag which uses a URI other than an HTTP URI as the value of its action attribute. Then who can decide which method needs to be used with an FTP URI? It seems HTML restricts the possible values of form&#039;s action attribute to only HTTP URIs. How could I explain this?

The HTML specification doesn&#039;t say that user agent developers need to use HTTP&#039;s GET method for an anchor. Then how could they know how to handle the element with HTTP?

I know my English is really bad, but I just want to know how I can define in the media type that an anchor needs to be handled with HTTP&#039;s GET.</description>
		<content:encoded><![CDATA[<p>Hi Roy,</p>
<p>The first bullet says &#8220;REST API should not be dependent on any single communication protocol.&#8221; and &#8220;In general, any protocol element that uses a URI for identification must allow any URI scheme to be used for the sake of that identification.&#8221;</p>
<p>If I understand it correctly, when I design a media type, I should not restrict URIs to a limited set of URI schemes. However, HTML doesn&#8217;t define  how user agents can handle a form tag which uses a URI other than an HTTP URI as the value of its action attribute. Then who can decide which method needs to be used with an FTP URI? It seems HTML restricts the possible values of form&#8217;s action attribute to only HTTP URIs. How could I explain this?</p>
<p>The HTML specification doesn&#8217;t say that user agent developers need to use HTTP&#8217;s GET method for an anchor. Then how could they know how to handle the element with HTTP?</p>
<p>I know my English is really bad, but I just want to know how I can define in the media type that an anchor needs to be handled with HTTP&#8217;s GET.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Fomenting unREST : Is RESTfulness a semantics game ? Why does REST require statelessness ?</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-874</link>
		<dc:creator>Fomenting unREST : Is RESTfulness a semantics game ? Why does REST require statelessness ?</dc:creator>
		<pubDate>Thu, 13 Nov 2008 01:27:04 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-874</guid>
		<description>[...] Fielding recently wrote : REST APIs must be hypertext-driven. It is an excellent writeup which actually focuses on What REST is NOT and is written in the [...]</description>
		<content:encoded><![CDATA[<p>[...] Fielding recently wrote : REST APIs must be hypertext-driven. It is an excellent writeup which actually focuses on What REST is NOT and is written in the [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy T. Fielding</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-842</link>
		<dc:creator>Roy T. Fielding</dc:creator>
		<pubDate>Sun, 09 Nov 2008 01:36:03 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-842</guid>
		<description>Bill,

A distributed queue is an implementation choice. You can certainly implement some applications by having them interact with a queue-like resource in a RESTful manner.  However, if your client relies on the resource being a queue, then it certainly isn&#039;t a RESTful API.  Do you see the difference? Encoding knowledge within clients and servers of the other side&#039;s implementation mechanism is what we are trying to avoid.

If a client is receiving instructions on how to interact with a resource just before acting only on those instructions, then the client doesn&#039;t care if the resource is a distributed queue. It simply doesn&#039;t need to know how the resource is implemented.  All it needs to know is the meaning of those instructions and some idea of what it wants to do next, whether that purpose be user-driven, configuration-driven, or some sort of AI-driven.</description>
		<content:encoded><![CDATA[<p>Bill,</p>
<p>A distributed queue is an implementation choice. You can certainly implement some applications by having them interact with a queue-like resource in a RESTful manner.  However, if your client relies on the resource being a queue, then it certainly isn&#8217;t a RESTful API.  Do you see the difference? Encoding knowledge within clients and servers of the other side&#8217;s implementation mechanism is what we are trying to avoid.</p>
<p>If a client is receiving instructions on how to interact with a resource just before acting only on those instructions, then the client doesn&#8217;t care if the resource is a distributed queue. It simply doesn&#8217;t need to know how the resource is implemented.  All it needs to know is the meaning of those instructions and some idea of what it wants to do next, whether that purpose be user-driven, configuration-driven, or some sort of AI-driven.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-836</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Fri, 07 Nov 2008 23:19:54 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-836</guid>
		<description>Roy,

What about the usecase of a distributed queue?  The queue should not care about the media types it is exchanging between senders and receivers, yet it can quite easily satisfy the addressability, uniform interface, and statelessness constraints of a RESTful architecture.  Can&#039;t a service that is media-type agnostic be a RESTful API?  Such a service would require assigning semantic meaning to a specific HTTP method and URI pattern and would not receive state transition information from its exchanged media types (as the service doesn&#039;t care or need to know about the media types).  I hope I am explaining myself well.

For example:
POST /{queue-name} sends a message to the queue
GET /{queue-name}/top is the current message waiting to be processed.  It returns 
Location: /messages/111
DELETE /messages/111 tells server you are done processing that message.

There are specific state transitions for the receiver, but why does the media type have to contain information on how to process a received message?

Assigning a little bit of semantics to the URI and HTTP methods adds a lot of simplicity to the overall architecture without requiring an &quot;envelope&quot; format to exchange data.  I also think it is far easier to maintain and re-use over the long term.</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>What about the usecase of a distributed queue?  The queue should not care about the media types it is exchanging between senders and receivers, yet it can quite easily satisfy the addressability, uniform interface, and statelessness constraints of a RESTful architecture.  Can&#8217;t a service that is media-type agnostic be a RESTful API?  Such a service would require assigning semantic meaning to a specific HTTP method and URI pattern and would not receive state transition information from its exchanged media types (as the service doesn&#8217;t care or need to know about the media types).  I hope I am explaining myself well.</p>
<p>For example:<br />
POST /{queue-name} sends a message to the queue<br />
GET /{queue-name}/top is the current message waiting to be processed.  It returns<br />
Location: /messages/111<br />
DELETE /messages/111 tells server you are done processing that message.</p>
<p>There are specific state transitions for the receiver, but why does the media type have to contain information on how to process a received message?</p>
<p>Assigning a little bit of semantics to the URI and HTTP methods adds a lot of simplicity to the overall architecture without requiring an &#8220;envelope&#8221; format to exchange data.  I also think it is far easier to maintain and re-use over the long term.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Interoperability Happens</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-832</link>
		<dc:creator>Interoperability Happens</dc:creator>
		<pubDate>Fri, 07 Nov 2008 05:34:29 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-832</guid>
		<description>&lt;strong&gt;REST != HTTP...&lt;/strong&gt;

...</description>
		<content:encoded><![CDATA[<p><strong>REST != HTTP&#8230;</strong></p>
<p>&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roy T. Fielding</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-806</link>
		<dc:creator>Roy T. Fielding</dc:creator>
		<pubDate>Sat, 01 Nov 2008 15:09:05 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-806</guid>
		<description>Dima,

I am not sure why you think that having an obscure URI format will somehow give you a secure call (whatever that means). Identifiers are public information.

RESTful systems perform secure operations in the same way as any messaging protocol: either by encapsulating the message stream (SSL, TLS, SSH, IPsec, ...) or by encrypting the messages (PGP, S/MIME, etc.). There are numerous examples of that in practice, and more in the future once browsers learn how to implement other authentication mechanisms.</description>
		<content:encoded><![CDATA[<p>Dima,</p>
<p>I am not sure why you think that having an obscure URI format will somehow give you a secure call (whatever that means). Identifiers are public information.</p>
<p>RESTful systems perform secure operations in the same way as any messaging protocol: either by encapsulating the message stream (SSL, TLS, SSH, IPsec, &#8230;) or by encrypting the messages (PGP, S/MIME, etc.). There are numerous examples of that in practice, and more in the future once browsers learn how to implement other authentication mechanisms.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dima</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-805</link>
		<dc:creator>Dima</dc:creator>
		<pubDate>Sat, 01 Nov 2008 12:50:42 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-805</guid>
		<description>Roy,

do you think any of the public API&#039;s out there are truly RESTful?

One problem I have is how to do security and keep it pure RESTFul

In order to have secure call I have to do something like:

GET /resource/11231231/token=KJGHY7687JKGH

Unless I do POST - is there a better way you see for this?

Dima.</description>
		<content:encoded><![CDATA[<p>Roy,</p>
<p>do you think any of the public API&#8217;s out there are truly RESTful?</p>
<p>One problem I have is how to do security and keep it pure RESTFul</p>
<p>In order to have secure call I have to do something like:</p>
<p>GET /resource/11231231/token=KJGHY7687JKGH</p>
<p>Unless I do POST &#8211; is there a better way you see for this?</p>
<p>Dima.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Espace de François &#187; Blog Archive &#187; Faire du REST, ce n&#8217;est pas&#8230;</title>
		<link>http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven#comment-787</link>
		<dc:creator>Espace de François &#187; Blog Archive &#187; Faire du REST, ce n&#8217;est pas&#8230;</dc:creator>
		<pubDate>Wed, 29 Oct 2008 08:31:52 +0000</pubDate>
		<guid isPermaLink="false">http://roy.gbiv.com/untangled/?p=56#comment-787</guid>
		<description>[...] imaginez ma hâte lorsque j&#8217;ai découvert un post de Roy Fielding qui commence par la phrase suivante : &#8220;I am getting frustrated by the number [...]</description>
		<content:encoded><![CDATA[<p>[...] imaginez ma hâte lorsque j&#8217;ai découvert un post de Roy Fielding qui commence par la phrase suivante : &#8220;I am getting frustrated by the number [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.741 seconds -->
