Asp.net mvc 关于MVC图中REST的澄清

Asp.net mvc 关于MVC图中REST的澄清,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,首先,我不知道这是否是解决这类问题的最佳场所,因为它不是实际的代码。请让我知道我是否应该使用其他网站 我正在为一个报告做一个MVC4体系结构图,因为这是我第一个使用MVC的项目,我想知道有人能跟我澄清一下视图和控制器之间是RESTHTTP POST等,还是控制器到模型,因为控制器正在获取和设置数据?还应该在服务器端绘制模型,在客户端绘制视图+控制器吗 这里是我目前的一些模型。 首先,ASP.NETMVC是一个服务器端框架。基本上,您在控制器、模型和视图中编写的所有代码都在服务器上执行 REST

首先,我不知道这是否是解决这类问题的最佳场所,因为它不是实际的代码。请让我知道我是否应该使用其他网站

我正在为一个报告做一个MVC4体系结构图,因为这是我第一个使用MVC的项目,我想知道有人能跟我澄清一下视图和控制器之间是RESTHTTP POST等,还是控制器到模型,因为控制器正在获取和设置数据?还应该在服务器端绘制模型,在客户端绘制视图+控制器吗

这里是我目前的一些模型。

首先,ASP.NETMVC是一个服务器端框架。基本上,您在控制器、模型和视图中编写的所有代码都在服务器上执行

REST表示性状态传输是一种体系结构样式,它描述了客户端和服务器之间通信的标准。如果您声称您的应用程序实现了REST原则,那么您就声称您支持使用应用程序的标准。例如,如果您询问任何熟悉SQL的人,无论是P-SQL还是T-SQL,他们应该使用什么术语来查询数据,他们会告诉您选择正确?您可以对REST原则应用相同的类比:为了从服务器查询数据,应该使用HTTPGET,但另一个规则是HTTPGET不应该修改任何服务器数据。另一个例子是创建一个新对象——应该通过HTTP POST来完成,HTTP POST除了返回操作的执行状态:201之外,不应该返回任何东西——如果创建成功,或者在出现错误时返回500或任何其他HTTP错误状态

因此,如果我们回到你的问题:

有人能跟我澄清一下视图和控制器之间是REST HTTP POST等,还是控制器要建模,因为控制器正在获取和设置数据

REST既不应用于控制器和视图之间,也不应用于控制器和模型之间。REST体系结构通过指定控制器的访问方式和返回内容应用于控制器。比如说

public class UserController : Controller
{
    [HttpGet]
    public JsonResult Users (int? id)
    {
       //if id is not null return one specific user otherwise return a list of users 
    }

    [HttpPost]
    public ActionResult Users (User user)
    {
       //Create a new user and return an appropriate status: 201/200 on success or an appropriate error status 
    }

    [HttpPut]
    public ActionResult Users (User user)
    {
       //Updates a user and return an appropriate status
    }

    [HttpDelete]
    public ActionResult Users (int id)
    {
       //delete a user and return an appropriate status
    }
}
如果您的MVC应用程序将视图作为响应返回,那么应用REST就不那么重要了,这是它的主要部分之一。因此,如果是这种情况,我就不太关心它了。若你们计划将你们的应用程序作为一种服务来使用,它公开API来查询和操作数据,那个么这是一种可行的方法,在这种情况下,我将尝试使它恢复完整

关于您的图表:

当您使用“服务器”这个术语时,您谈论的是在服务器上执行的代码。NET MVC框架,它是一个服务器端框架,所以控制器、视图和模型都属于服务器端。有各种客户端MVC/MVVM框架,如AngularJs、Ember.js和许多其他框架,因此MVC本身并不意味着它是客户端或服务器端。
控制器不一定是客户端的一部分。你可以说它实际上是ServerThank@Nips的一部分!我最初以为它是服务器,但我看到其他网站说它在客户端ASP.NETMVC中,控制器在服务器中运行。但是许多与MVC一起使用的新JavaScript框架在客户端也有一个表示控制器!现在我知道控制器运行在服务器端,其余组件位于视图和控制器之间?因此,对于实例,我将使用AJAX requestsAlex,这是一个出色的答案!清楚地解释并回答了我所有的问题!非常感谢您花时间解释清楚: