- From: Markus Lanthaler <markus.lanthaler@gmx.net>
- Date: Tue, 5 Apr 2016 22:24:52 +0200
- To: "'Tomasz Pluskiewicz'" <tomasz@t-code.pl>, <public-hydra@w3.org>
Hi,
On 13 Mrz 2016 at 16:50, Tomasz Pluskiewicz wrote:
> I've been thinking about this for some time. Consider a blogging
> platform, where I can POST a blog post
>
> HTTP/1.1 POST /blog
>
> { "title": "My blog post", "text": "some markdown maybe" }
>
> But instead of getting published immediately, it could create a draft
> at, say /drafts/my-blog-post.
>
> Now how would I use Hydra to model an operation, which publishes the
> draft? I would think of a POST operation like
>
> HTTP/1.1 POST /blog/published
>
> { "@id": "/drafts/my-blog-post" }
I agree with Karol and Dietrich that this probably wouldn't be the cleanest design.
> Unfortunately I don't see how that would be possible. This raises a
> number of questions:
>
> 1. Should it be possible to define complete or partial body of an
> operation in addition to the "expects" property? I'm thinking
>
> {
> "operation": [
> "expects": "BlogPost",
> "body": {
> "title": "New blog post"
> }
> ]
> }
That would just be a different "expects" I guess. Anyhow, the problem is that we currently can't express "give me the URL of a resource (out of that set of valid resources).
> If the "expects" was absent, the "body" would be the complete request to
> be sent by the client. Otherwise it could serve as an initial
> representation to create the UI/form.
>
> 2. Should it be possible to have an operation not on self but on another
> resource. This is what I could write to describe the publish operation
> above:
>
> {
> "operation": [
> "@type": "PublishOperation",
> "url": "/blog/published",
> "body": { "@id": "/drafts/my-blog-post" }
> ]
> }
Yes, we should make that possible. We just need to find a way to relate the resource to the operation then... the simplest solution would be to leverage schema.org/action for that.
> I'm feeling kind of like the "/blog/published" resource should be a link
> with it's own operation. I'm still not sure how what to do about the
> predefined "body".
The simplest approach would be to add a "status" property to the blog post. An alternative would be to have a collection of published blog posts (as you seem to have) and then just link the two resources (there exists an standards track draft for a HTTP Link/Unlink methods [1]).
Cheers,
Markus
[1] https://tools.ietf.org/html/draft-snell-link-method-12
--
Markus Lanthaler
@markuslanthaler
Received on Tuesday, 5 April 2016 20:25:27 UTC