- From: Kingsley Idehen <kidehen@openlinksw.com>
- Date: Tue, 26 Nov 2013 15:33:22 -0500
- To: public-hydra@w3.org
- Message-ID: <52950592.1010609@openlinksw.com>
On 11/26/13 1:11 PM, Mark Baker wrote: > Marcus, > > Creating a new thread. Ruben and I have covered related ground before > in LDP where we also disagreed, but since this actually stands a > chance at being useful ;), it's important we're in synch. > > On Tue, Nov 26, 2013 at 7:32 AM, Markus Lanthaler > <markus.lanthaler@gmx.net> wrote: >> On Sunday, November 24, 2013 5:10 PM, Mark Baker wrote: >>> On Fri, Nov 22, 2013 at 5:01 AM, Ruben Verborgh wrote: >>>> Alternatively, we could learn from >>>> http://tools.ietf.org/html/rfc2616#section-9.5 to define >>>> standard operations: >>>> >>>>> POST is designed >>>>> to allow a uniform method to cover the following functions: >>>>> >>>>> - Annotation of existing resources; >>>>> >>>>> - Posting a message to a bulletin board, newsgroup, mailing list, >>>>> or similar group of articles; >>>>> >>>>> - Providing a block of data, such as the result of submitting >>> a >>>>> form, to a data-handling process; >>>>> >>>>> - Extending a database through an append operation. >>>> CreateResourceOperation covers the second thing here. >>> Sure, but that's not part of the interface to the service so out of >>> scope IMO. The method is POST which defines the contract between >>> client and server. Though the server may only implement one of those >>> things above, that's an implementation detail that the more generic >>> POST interface hides from the client. >> I think I have to disagree with this. Hydra's operations specify the >> semantics of an HTTP operation at a higher level of abstraction. HTTP's >> methods are enough to implement things like proxies, caches etc. but they >> are IMO not enough (by themselves) to convey the semantics of an operation >> in terms of business logic. > See below about sufficiency... But I will disagree with you that > Hydra's operation are higher-level; they are at the same level as HTTP > methods. Consider, when a server publishes an endpoint: > > <> :POST <http://example.org/my-endpoint> . > > it is declaring that it accepts POST requests to that URL, and that is > the entire contract. If it wants to create things (as opposed to > annotate things, or "extending a database"), that is its prerogative > as an implementation and it needn't indicate that to the client a > priori (201 is after the fact, of course), nor require the client > indicate which one it wants/expects (as that would be tunnelling ala > SOAP). The reason that matters from a REST POV is because REST > requires that components be able to be substituted behind a common > connector, and obviously that couldn't happen if clients were coupled > to any aspect of the component/implementation. > >> POST, e.g., is specified to be non-safe and non-idempotent. That doesn't >> tell you the difference between just storing an (opaque) order >> representation on a server acting purely as a file server e.g. vs. ordering >> goods. Caches etc. do not care about such details - they don't have to. But >> clients need to IMO. > They don't. And if they do, as above, they're not RESTful because > they're not using the uniform interface. > > All clients need to know is which links they should be interested in > and how to interact with them. > >> Do you really think POST/PUT etc. are enough? Or do you shove those >> semantics in to the media type? They need to be somewhere... currently they >> are documented in prose out of band. > I feel that the uniform interface is sufficient, yes (though that > doesn't mean that the currently standardized set of HTTP methods are > sufficient). And nothing need be shoved in to the media type for this > to occur except for the usual links and predicates/relations. > > > +1 -- Regards, Kingsley Idehen Founder & CEO OpenLink Software Company Web: http://www.openlinksw.com Personal Weblog: http://www.openlinksw.com/blog/~kidehen Twitter Profile: https://twitter.com/kidehen Google+ Profile: https://plus.google.com/+KingsleyIdehen/about LinkedIn Profile: http://www.linkedin.com/in/kidehen
Attachments
- application/pkcs7-signature attachment: S/MIME Cryptographic Signature
Received on Tuesday, 26 November 2013 20:33:45 UTC