users@jersey.java.net

Re: [Jersey] What HATEOAS actually means

From: Marc Hadley <Marc.Hadley_at_Sun.COM>
Date: Mon, 15 Feb 2010 12:18:17 -0500

On Feb 15, 2010, at 5:56 AM, Jan Algermissen wrote:
>
>>
>> We need to come with a number of patterns that can be applied to use-cases and have corresponding prototype implementations and from all that we will be able to hopefully define really good client and server hypermedia API support!
>>
>
> Recent discussions have made me think that among the more 'advanced' RESTafarians there seem to exist two camps that have a completely different view on how machine-to-machine hypermedia should be designed. Hence for example my apparent complete non-grasping of what it is you are trying to solve with the Jersey proposal (I just do not know that problem).
>
Perhaps it would help to spell out what we are trying to achieve. We want to build a client-side API that helps developers work with hypermedia-driven web applications. We believe its OK for client applications to bind at design-time to link types ("actions") but are aiming to delay other types of binding (URI, HTTP method) until runtime. We are using WADL as a forms meta language to decouple the client runtime from other representation media types.

The first stab at this uses HTTP Link headers because its easier to find and parse those than links embedded in representations but we'll get there eventually.

> I have brainstormed that here a bit: http://www.nordsc.com/blog/?p=358 and make sure you follow the links and read about Mike Amundsen's 'transient URIs' and Ian S. Robinson's 'ephemeral URIs'. Please also read my comment on Ian's blog (once he moderated it). My thinking likely only comes across in the complete context.
>
> I have a hunch that a) there is a very important aspect behind the 'divide' and b) it is vital to understand each other and reach a real conclusion (wrt Jersey especially).
>
Having read Mike and Ian's posts, I don't think we're on the same side of the "divide" if such a thing exists. I don't think transient or ephemeral URIs, as described, are the same thing as the "action" URIs used in the Jersey code. The Jersey "action" URIs are roughly equivalent to HTML form actions and I don't see these as being ephemeral: the results may change depending on server state but the client can hold on to a form as long as it likes before submitting it.

Marc.