It worked. People got what I was talking about much easier because the Level 3 was framed in reference to the other Levels.
I like the maturity model for REST but I don't like it for web APIs in general because it implies a false sense of linearity toward some API nirvana.There are other sets of constraints that are just as valuable and relevant and mature to certain problem domains as HATEOAS is to the web client-server model.For example, many web APIs consumed by an iOS app maintain their own engine of app state and it's a really good and valuable thing -- just ask the Instagram crew :-) -- just because it will never make sense as HATEOAS doesn't mean the API team is less talented or the design less mature. It just means the client is the engine of app state, CATEOAS.
Yes it does, this is not what the hypermedia constraint is about. I
don't know where this idea came from, but it's wrong.
Cheers,
Mike
In this way, you define a stable, general set of constraints (not
rules, more like guidelines<g>) that can apply across platforms,
frameworks, specific applications, etc.
Starting with Fielding's Constraints:
1 - Client/Server
2 - Stateless
3 - Cache
4 - Uniform Interface
4.1 + Identification of Resources
4.2 + Resource Representations
4.3 + Self-Descriptive Messages
4.4 + Hypermedia
5 - Layered System
6 - Code on Demand
Things to Drop
Seems to me WebAPI should drop items 2, 4.4, and 6.
It's possible that (since stateless is not a requirement for WebAPI),
4.3 can be dropped, too.
Is support for Cache (3) required here?
Is content-negotiation (selecting a format at runtime) a requirement (4.2)?
Things to Add
A - Well-defined URI construction rules (need more detail here, I suspect)
B - Is support for cookies (or some session identifier) required?
C - Other architectural requirements?
Just a suggestion, of course.
mca
http://amundsen.com/blog/
http://twitter.com@mamund
http://mamund.com/foaf.rdf#me
Cheers,
Mike
--
Mike
http://twitter.com/mikekelly85
http://github.com/mikekelly
http://linkedin.com/in/mikekelly123
Hypertext should drive their state, hence HATEOAS. The server's there
to maintain resource state somehow, and to produce responses to
requests from clients.
Yeah, if it was aware of some entry point for each of them. Or
instead, only one of the APIs could be 'aware' of the other and be
linking the client across into it.
So perhaps we could refer to HATEOAS-compliant APIs as "surfable" and ones that do everything else except HATEOAS as "non-surfable"dude 1: "hey dude, is your API surfable?"dude 2: "yup, here's the landing page for it. is your API surfable?"dude 1: "nah, but here is the doco site"dude 2: "sweet, i'll start there and find the requests I need to use"