REST has been such a popular buzzword for the last couple of years (or so) and when ASP.NET MVC was rolled out, everyone was relating REST with ASP.NET MVC. I also fell for the buzz and from the lack of my knowledge, my understanding of REST was simply just:
REST = SEO/User friendly URLs
But it's so much more. And the more I learn about REST the less I relate ASP.NET MVC with it. It is of course much closer to REST than WebForms. So the truth is actually quite the opposite:
REST ≠ SEO/User friendly URLs
And having your default route defined as controller/action/id
is definitelly not RESTful.
Let me explain my problem with this comprehension.
If ASP.NET MVC was RESTful, we wouldn't have default route defined as:
controller/action/id
but rather
resources/id /* that would have to use HTTP methods GET/PUT/POST/DELETE */
So instead of having (also providing HTTP method with request path):
/product/index/1 /* GET */
/product/create /* POST */
/product/delete/1 /* POST */
/product/update/1 /* POST */
it should be (HTTP method provided here as well)
/products/1 /* GET */
/products /* POST */
/products/1 /* DELETE */
/products/1 /* PUT */
Now that would be RESTful. The good thing is that this is actually possible. And if you'd make it fully RESTful it would also mean that you'd have to use Ajax because PUT and DELETE methods can not be done with browser-only requests. So modern Ajax applications can actually be completely RESTful.
Ajax is client technology and doesn't really have anything to do with ASP.NET MVC. Fact is that ASP.NET MVC can be done as a fully RESTful application. The means of achieving it (Ajax) is not important. (thanks to Darin Dimitrov)
The main question
Why do we consider ASP.NET MVC as a RESTful framework especially relating its URL routing to it? Why didn't they define default URL route to enforce RESTfulness? I'm not looking for argumentative answers but those that actually answer the question - how did this relation come into life... Maybe I'm still not wise enough and still take this as the lack of my knowledge about both.