首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >ASP.NETMVC有什么好处?

ASP.NETMVC有什么好处?
EN

Stack Overflow用户
提问于 2018-03-26 00:07:23
回答 2查看 0关注 0票数 0

在过去的几年里,REST一直是如此流行的流行语,当ASP.NET MVC推出时,每个人都将REST与ASP.NET MVC相关联。我也因为缺乏知识而哗然,我对REST的理解仅仅是:

REST = SEO /用户友好的网址

但它更多。而我对REST了解得越多,就越少地将ASP.NET MVC与它联系起来。它比REST更接近WebForms。所以事实上恰恰相反:

REST≠SEO /用户友好的URL

且你的默认路由定义为controller/action/id绝对不能RESTful的。

让我用这个理解来解释我的问题。

如果ASP.NET MVC是RESTful,我们不会将默认路由定义为:

代码语言:javascript
复制
controller/action/id

反而

代码语言:javascript
复制
resources/id  /* that would have to use HTTP methods GET/PUT/POST/DELETE */

所以,而不是(也提供HTTP方法与请求路径):

代码语言:javascript
复制
/product/index/1  /* GET */
/product/create   /* POST */
/product/delete/1 /* POST */
/product/update/1 /* POST */

它应该是(这里也提供了HTTP方法)

代码语言:javascript
复制
/products/1  /* GET */
/products    /* POST */
/products/1  /* DELETE */
/products/1  /* PUT */

现在这将是RESTful。好事是这实际上是可能的。如果有需要,使其充分的RESTful这也意味着你必须使用Ajax,因为PUT和DELETE方法不能只用浏览器的请求完成(这并不完全正确1)。所以现代Ajax应用程序实际上可以完全RESTful。

Ajax是客户端技术,与ASP.NET MVC没有任何关系。事实是,ASP.NET MVC可以作为完全REST风格的应用程序来完成。实现它的手段(Ajax)并不重要。(感谢Darin Dimitrov)

主要问题

为什么我们将ASP.NET MVC视为一个RESTful框架,特别是将它的URL路由关联到它?为什么他们没有定义默认的URL路由来执行 RESTfulness?我不是在寻找争论的答案,而是那些真正回答这个问题的人 - 这种关系是如何进入生活的......也许我还不够聪明,仍然认为这是因为缺乏对两者的认识。

实际上,不必使用Ajax来实现完全RESTful架构。Asp.net MVC支持(自版本2以来)HTTP方法重写,这意味着可以使用浏览器表单发出PUT或DELETE方法。你所要做的就是添加一个额外的隐藏字段,如:

代码语言:javascript
复制
<input type="hidden" name="X-HTTP-Method-Override" value="DELETE" />

Asp.net MVC框架将能够将这样的POST请求理解为一个DELETE请求,并且HttpDeleteAttribute动作方法选择器也将它理解为一个删除请求。HTTP方法覆盖FTW!

EN

回答 2

Stack Overflow用户

发布于 2018-03-26 08:20:44

没有什么能够阻止你resource/id在ASP.NET MVC中使用HTTP方法GET / PUT / POST / DELETE。这不是默认的路由设置,但你可以做到这一点。

ASP.NET MVC是一种服务器端技术,允许公开RESTful URL。他们消费的方式并不重要。询问了为什么ASP.NET MVC被认为是RESTFul技术,答案是因为可以轻松地公开RESTFul网站的使用情况,就像那样简单。

票数 0
EN

Stack Overflow用户

发布于 2018-03-26 09:37:57

我认为很多讨论都与MVC之前的.NET Web堆栈的非RESTful有关,以及MVC使它在.NET平台上构建RESTful应用程序比ASP.NET MVC具有的任何特定RESTful功能容易多少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档