繁体   English   中英

asp.net mvc和web api哪个是更好的Http POST或PUT

[英]asp.net mvc and web api which is better Http POST or PUT

我有一个类型为asp.net mvc和web api的应用程序。 我对http post和http put有点困惑。 什么时候使用什么,各有利弊。 我已经浏览了很多博客,但没有充分理由为什么设计。

使用POST ,您必须从头开始创建全新的记录。 使用PUT ,您必须更新数据库中的现有记录

这是PUT和POST之间的差异

   `POST is Not idempotent`--> 

一次又一次地运行POST操作意味着每次运行时都会创建新实例。

`PUT is Idempotent`--> 

PUT是一次又一次地调用PUT的幂等操作将导致相同的结果。

所以POST不是幂等的,而PUT是幂等的。

`There is also PATCH` -->

当您只需要更新模型的少数属性时使用补丁。换句话说,部分更新。

简单地说(没有双关语):

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等唯一的缺点是并非所有开发人员都熟悉它们,而且某些第三方软件可能不支持它们,或者至少它可能不像使用更熟悉的动词如GETPOST那么容易。

例如,几周前我遇到一个问题,就是在它出现之前将代理放在API前面并且代理不支持HTTP PUT动词(可能是配置问题 - 但我们没有有权访问代理来修复它)所以我们不得不调整API并在最后一刻将其更改为POST (这也意味着我们必须更改正在使用它的客户端(移动应用程序))。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM