Re: Hypermedia and media types

Hi Dimitri,

just my 50 cents on two aspects from your mail.

"In my opinion, methods, operations and validations has got nothing to 
do with the data itself"

That's of course true and that's why you would not store them in your 
persistence layer.
We enrich the resources read from the database (there is no nee to 
employ a triple store btw.)
with the operations dynamically when they are delivered to solve this.

"I'm about to start supporting them all and let the client choose which 
one to use"

Building APIs with hydra and JSON-LD for 3 years now and knowing those 
others
that are around [1] I can tell you that this is noble goal but if you 
are in a typical
project setting hardly possible because you will get killed by the effort.

Greets, Thomas

[1] http://vanthome.github.io/rest-api-essay-presentation/rest_apis.html

On 08/18/2015 05:31 PM, Dimitri van Hees wrote:
> Hi all,
>
> I'm designing an API and I am struggling with the choice of supported hypermedia standards. Fact: we need to paginate through collections of data. I'd like to offer both plain JSON and JSON-LD and let the client choose which response he wants using the accept header. This is no problem because we can simply use application/json and application/ld+json.
>
> Problems arise when we also want to add hypermedia to the response. In my opinion, one of the hypermedia versions of my the JSON response is HAL, returned when application/hal+json is being requested. The hypermedia version of the JSON-LD response should be Hydra, but as far as I know Hydra doesn't have it's own media type because it's in fact just valid application/ld+json. However, JSON-LD is also in fact just valid application/json, yet still has it's own media type. Just like HAL by the way, which is also just valid application/json.
>
> I think that one of the nicest things of JSON-LD is that it can be converted to RDF and that the URL actually is the object itself. So I want to give people the choice between fetching just the resource in JSON-LD *and* fetching the resource with hypermedia (Hydra in this case). In my opinion, methods, operations and validations has got nothing to do with the data itself, so I can imagine use cases where I don't want that data in a triplestore for example. As Hydra doesn't have it's own media type, what would be the best practice to achieve this?
>
> The same counts for the non LD responses by the way. There  are so many hypermedia standards out there that I can't choose which one to use. In fact I think I'm about to start supporting them all and let the client choose which one to use. But then again, there should also be a possibility to fetch just the plain old JSON object, without any hypermedia. Then again, most people always return hypermedia (say application/hal+json), even when the accept header is application/json. Perhaps there should be something like application/raw+json... ;-)
>
> Any thoughts on this?
>
> Regards,
>
> Dimitri van Hees 		 	   		

Received on Tuesday, 18 August 2015 20:22:27 UTC