3 ms·
Yeah, that's what I was thinking. I am just curious how a proper REST API looks different than Github, Stripe or other startups implemented.
by alpb 14y ago
Yeah, that's what I was thinking. I am just curious how a proper REST API looks different than Github, Stripe or other startups implemented.
- fusiongyro 14y agoI saw an article a while back advocating that when you hit, say, a search resource, it should return links to the next page, so, if you hit /comments/?name=alpb&perPage=10, you might get: <comments nextPage="/comments/?name=alpb&perPage=10&page=2"> ... </comments> There's so many ways to include results though. One way would be: <comment href="/comments/2398293">Text of comment</comment> You could also do: <comment>/comments/2398293</comment> There's no standard way of getting across what a link is to another resource, or where that information should go. I don't think this is, in practice, a huge deal, because people don't write generic consumers of RESTful APIs. At some point you need to actually know what it is you're trying to do and code for it. On top of that, with RDF or XLink or XPointer and whatnot there probably are standards for doing this kind of thing, but nobody knows them, uses them or follows them.
- davedx 14y agoYup, that's HATEOAS: using hypertext to inform your clients about the state of the application (where they are, and what they can do next from this point).
- fusiongyro 14y agoMy favorite acronym of all time.
- jalfresi 14y ago"There's no standard way of getting across what a link is to another resource, or where that information should go." That doesn't quite mesh with my understanding. Some media types support hyperlinks, like HTML, which describe how links should be included (anchors, forms and link elements). For media types that don't support hyperlinks, such as images, video etc; you can use the HTTP header Link (http://www.w3.org/wiki/LinkHeader http://www.w3.org/wiki/LinkHeader). Both these methods support the relationship attribute allowing you to specify the relationship between resources thus documenting the way clients should interact with such linked hypermedia (e.g. the HTML media type specifies that Link elements with the rel attribute should perform a HTTP GET request to the indicated resource). In the example you gave, you could use a rel attribute like "comment" and link to the comments. RESTful clients could then follow the hyperlinks to the comments, knowing how to interact with them and what to do: <link rel="comment" href="/comments/2398293"/>
- fusiongyro 14y agoRight, but unless your resources adhere to some other standard, there's no reason why the downstream consumer would expect to find URLs in certain places or know what to do with them if they were there. Again, I don't see this as a problem, though the OP does.