I'm with you on just knowing we can do so much better. Some of the RESTful HATEOS based APIs coming out are simply beautiful. However,
- 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.
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.
The entire https payload is encrypted, headers and all. REST says nothing about how authentication should be implemented. 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.