在MVC中,HttpPost用于在服务器中创建资源,HttpPut用于更新服务器中的现有资源(如果资源不存在则创建新资源)。
让我们看看下面的模型类。
public class Employee
{
public int ID {get; set;}
public string FirstName {get; set;}
public string LastName {get; set;}
}
要在数据库中创建一个新记录,我在控制器中创建了一个HttpPost类型的操作方法,并将employee对象从视图发送到控制器,除了ID属性外,所有属性值都已填充。
由于模型中不存在ID属性,因此我将在应用程序中执行Create逻辑。
现在,如果我想更新此记录,那么我仍然可以使用相同的HttpPost方法,但ID的这个时间值不是null。
那么,如果我可以从同一个HttpPost方法同时进行“更新”和“插入”,那么HttpPut的需求是什么。
http堆栈的POST和PUT方法的主要区别是PUT是幂等的而POST不是。这意味着假设您从客户端应用程序运行循环,并在每次迭代中执行PUT调用服务器。在这种情况下,服务器将产生相同的结果。但如果是POST,服务器将产生多个资源。