Le REPOS a été un mot à la mode populaire pour les deux dernières années (ou presque) et quand ASP.NET MVC sorti, tout le monde était relatives REPOS avec ASP.NET MVC. J'ai aussi craqué pour le buzz, et de l'absence de mes connaissances, de ma compréhension de REPOS a été tout simplement:
REPOS = SEO/User friendly URLs
Mais c'est tellement plus. Et plus j'en apprends sur le REPOS du moins je rapporte ASP.NET MVC avec elle. Bien entendu, il est beaucoup plus proche de RESTE que WebForms. Donc, la vérité est en fait tout à fait le contraire:
RESTE ≠ SEO/User friendly URLs
Et d'avoir votre route par défaut définie comme controller/action/id
est certainement pas de tout repos.
Laissez-moi vous expliquer mon problème avec cette compréhension.
Si ASP.NET MVC a été Reposante, nous n'aurions pas de route par défaut définie comme:
controller/action/id
mais plutôt
resources/id /* that would have to use HTTP methods GET/PUT/POST/DELETE */
Alors au lieu d'avoir (aussi fournir une méthode HTTP à demander le chemin d'accès):
/product/index/1 /* GET */
/product/create /* POST */
/product/delete/1 /* POST */
/product/update/1 /* POST */
il devrait être (méthode HTTP fournis ici)
/products/1 /* GET */
/products /* POST */
/products/1 /* DELETE */
/products/1 /* PUT */
Maintenant, ce serait Reposant. La bonne chose est que ce qui est réellement possible. Et si vous voulez le rendre totalement Reposant cela signifie également que vous devez avoir à utiliser Ajax parce que les méthodes PUT et DELETE ne peut pas être fait avec un navigateur uniquement les demandes (ce n'est pas tout à fait vrai1). Tellement moderne des applications Ajax peut effectivement être complètement Détendu.
Ajax est client de la technologie et de ne pas vraiment avoir rien à faire avec ASP.NET MVC. Le fait est que ASP.NET MVC peut être fait entièrement Reposant application. Les moyens de l'atteindre (Ajax) n'est pas important. (merci à Darin Dimitrov)
La question principale
Pourquoi ne nous considérons ASP.NET MVC comme un cadre Reposant notamment sur son routage d'URL? Pourquoi n'ont-ils pas définir l'URL par défaut de l'itinéraire pour appliquer de la Détente? Je ne suis pas à la recherche pour argumentatif de réponses, mais ceux qui ont réellement répondre à la question - comment ce rapport de venir dans la vie... Peut-être que je ne suis pas encore assez sage et toujours prendre ce que l'absence de mes connaissances sur les deux.
1mise à Jour de l'info
En fait, vous n'avez pas à utiliser Ajax pour mettre pleinement en œuvre Reposant architecture. Asp.net MVC prend en charge (depuis la version 2) HTTP redéfinition de méthode, ce qui signifie que vous pouvez question de METTRE ou SUPPRIMER des méthodes à l'aide de formulaires de navigateur. Tout ce que vous avez à faire est d'ajouter un champ caché comme:
<input type="hidden" name="X-HTTP-Method-Override" value="DELETE" />
Asp.net framework MVC sera en mesure de comprendre ce genre de POST demande comme une demande de SUPPRESSION et d' HttpDeleteAttribute
action sélecteur de la méthode sera aussi la comprendre comme une demande de suppression. HTTP redéfinition de Méthode FTW!