Facebook Developer API, the suck.

Moe just pointed me to Facebook's Developer API. Facebook claims that its HTTP based API is RESTful... but the use of XML and HTTP (and avoidance of SOAP) does not make an API RESTful. (I sigh and laugh).

Whatever developer team designed the Facebook Developer REST API needs to go back and reread Roy Fielding's dissertation and W3C's WebArch Document; they even should reread the documents they reference in their own FAQ:

What is REST?
REST stands for Representational State Transfer. The Facebook API currently supports a REST based protocol; to learn more refer to Wikipedia's definition.

My Counter-claim, Facebook created an RPC server instead of a REST API.

Fact: All Facebook requests go to a single URL: http://api.facebook.com/restserver.php (except for login.php).

Comment: REST is about exposing Resources in a uniform syntax, on the web we have URIs. Meaning, we have URIs for each resource (many URIs), and can be seen with the example on the REST Wikipedia entry:

With REST, on the other hand, the emphasis is on the diversity of resources, or nouns; for example, a REST application might define the following resources
http://example.com/users/
http://example.com/users/{user} (one for each user)
http://example.com/findUserForm
http://example.com/locations/
http://example.com/locations/{location} (one for each location)
http://example.com/findLocationForm

Working off a single URI breaks the universal syntax and resource ideas, and Facebook commits this sin.

Fact: All Facebook actions are method based, method names are sent along to the single URI as POST parameters.

Comment: If one implements REST via HTTP/XML, then GET/POST/PUT/DELETE are the verbs one uses on given URI represented Resources. Sending method names in the request body is RPC.

That's it, that's all that is needed to critique the unRESTfulness of Facebook's REST API. Even Wikipedia's own REST entry, itself, states that Facebook's REST API is not-REST.