Shu - you don't know what you're doing (people here asking for help);
Ha - you closely follow the rules (people here complaining);
Ri - you understand the topic sufficiently to adapt and respond as necessary (people for whom this is really not a big deal).
[Actually, now that I read the Wikipedia page for that, it's not quite right - apologies to any martial arts people out there http://en.wikipedia.org/wiki/Shuhari]
Off the top of my head:
- API method urls are all the same .aspx, regardless of method used
- All calls are sent as GET (ignoring the whole point of HTTP methods in REST)
- No HTTP method codes as responses for automated parsing
- Custom authentication putting credentials in URL or in headers instead of relying on proven HTTP auth schemes we've been using for years (basic, form, etc)
- Return format is done with get arguments instead of HTTP content negotiation in headers (not so bad)
They've completely missed the boat here.
- API method urls are all the same .aspx, regardless
of method used
Extensions are meaningless. That is why we have Accept/Content-type headers. The HTTP spec even explicitly says to not use extensions to relay content information between client and server, from what I recall. - All calls are sent as GET (ignoring the whole point
of HTTP methods in REST)
I haven't read Fielding's dissertation in a while, but using the "Coles Notes" version from Wikipedia, I do not actually see using the verbs a requirement for REST. I do not recall REST even requiring HTTP. You can use any protocol you want, so long as it conforms to the principles.RESTful, on the other hand, does specify the use of HTTP verbs, but the site in question makes no mention of being RESTful.
By not using the proper verbs, the site does appear to violate the caching rules of REST though, I'll give you that.
- Custom authentication putting credentials in URL
or in headers (neither of which are encrypted over
https)
The entire https payload is encrypted, headers and all. REST says nothing about how authentication should be implemented. - Return format is done with get arguments instead
of HTTP content negotiation in headers (not so bad)
This falls under the same as using extensions. Though I will agree with you that it is a reasonable compromise in some cases, such as using a browser where you can't reasonably set your own headers.Using a token to sign requests is certainly a good idea, but you probably don't want to pass the token around using a cookie, even over HTTPS. Many browsers don't enforce good cookie security and will transmit cookies in the clear if an attacker can redirect the browser to a non-HTTPS URL on the same domain.
Thanks!
(but please correct me if it isn't a good example)
Isn't it more the fact that they spend all of their efforts documenting the URI structure and very little on the media types used - which is very unRESTful.
This company, along with others (e.g.: Flickr and their infamous "REST" API), are responsible for turning "REST" into yet another buzzword.