</snip>
i think a better question (esp. in light of the Fielding quote you selected) is: "Are 'action' type indicators in responses useful?" and my reply is: "yes".
@rel is not the only place to offer this (i gave the example from XLink of @role which UBER will likely be using). there are other ways to indicate available actions. debating *how* to indicate actions is not the same as debating "useful" or "needed", etc.
<snip>
</snip>
vague, but let me take a run at it.
1 - the CRUD implicit hypermedia in Cj (which mirrors Atom) indicates a general assumption on what actions are *possible* and, as fielding notes, clients are free to make attempts the watch results. What Atom format does not suppy (and what Cj *does* supply) is additional information on *how* these actions can be carried out. for example:
0 - items[].href is defined as a parameterless read-only navigation (to return a single item in the collection)
1 - the link[] items (both collection.links and items[].links) are defined as parameterless read-only navigations (@render="link") or embedding (@render="image").
2 - the queries[] items are defined as parameterized read-only navigations (using data[] as the parameters w/ URL construction rules matching that of HTML.FORM@get).
3 - the template{} item is defined as a parameterized write navigations (using data[] as the body to pass to the service).
These four features are missing in Atom. while a client *could* take the "fielding" approach and simply supply random query-string and body parameters against likely methods to see the server's reactions, i think it "useful" to provide these details in the responses to cut down on the need for a client (and the client's human programmer) to experiment in oder to find what works.
The other links you provide all circle the same general topic -- assuming operations and arguments vs. claiming a particular use of the protocol is undesirable.my respons, in general to these kinds of discussions is: "meh."
by providing (in responses) machine-readable descriptions of available actions i have been able to:
- build client apps that "late-bind" on a)addresses, b)arguments, c)workflow
- reduce human-written documentation to support service provider APIs
- increase the number of feature changes that are possible w/o updating consumer apps.
- reduce the amount of breakage that occurs in interfaces when adding new features
yes, i like "action" type indicators.