asp.net mvc 和 web api 哪个更好 Http POST 或 PUT
Posted
技术标签:
【中文标题】asp.net mvc 和 web api 哪个更好 Http POST 或 PUT【英文标题】:asp.net mvc and web api which is better Http POST or PUT 【发布时间】:2014-10-17 02:23:06 【问题描述】:我有一个 asp.net mvc 和 web api 类型的应用程序。 我对 http post 和 http put 有点困惑。 什么时候用什么,各有什么优缺点。 我浏览了许多博客,但没有充分的理由说明设计的目的。
【问题讨论】:
***.com/questions/107390/… 【参考方案1】:使用POST
,您必须从头开始创建全新的记录。
使用PUT
来更新数据库中的现有记录
这里是 PUT 和 POST 之间的区别
`POST is Not idempotent`-->
意味着一次又一次地运行 POST 操作将在每次运行调用时创建新实例。
`PUT is Idempotent`-->
PUT 是幂等操作,一次又一次调用 PUT 将产生相同的结果。
所以 POST 不是幂等的,而 PUT 是幂等的。
`There is also PATCH` -->
当您只需要更新模型的少数属性时使用补丁。换句话说,部分更新。
【讨论】:
【参考方案2】:简单地说(没有双关语):
POST
通常用于创建新对象。
PUT
通常用于更新现有对象
使用正确的 HTTP 动词可以让您发布更简洁的 API,并且无需在端点 (url) 内编码意图。例如,比较:
使用正确的动词:
GET api/user/12345
POST api/user/12345
PUT api/user/12345
DELETE api/user/12345
破解端点:
GET api/user/12345
POST api/user/12345/create
POST api/user/12345/update
POST api/user/12345/delete
我认为使用PUT
等的唯一缺点是并非所有开发人员都熟悉它们,并且某些第三方软件可能不支持它们,或者至少它可能不像使用那么容易像GET
& POST
这样更熟悉的动词。
例如,几周前我遇到了一个问题,当时我在 API 即将上线之前放置了一个代理,并且代理不支持 HTTP PUT
动词(可能是配置问题 - 但是我们无法访问代理来修复它)所以我们不得不调整 API 并在最后一分钟将其更改为POST
(这也意味着我们必须更改正在使用它的客户端(移动应用程序)) .
【讨论】:
以上是关于asp.net mvc 和 web api 哪个更好 Http POST 或 PUT的主要内容,如果未能解决你的问题,请参考以下文章
AngularJS + ASP.NET Web API + ASP.NET MVC 身份验证
ASP.NET MVC Web.Api 路由 - 真实世界示例
了解 ASP.NET(MVC、Web API)中的令牌生成/验证