我有一个asp.net mvc和web api类型的应用程序。 我对http post和http put有点困惑。 什么时候使用什么,各有利弊。 我已经浏览了很多博客,但没有充分理由为什么设计。
答案 0 :(得分:2)
使用POST
,您必须从头开始创建全新的记录。
使用PUT
,您必须更新数据库中的现有记录
以下是PUT与PUT之间的差异。 POST
`POST is Not idempotent`-->
意味着一次又一次地运行POST操作将在每次运行调用时创建新实例。
`PUT is Idempotent`-->
PUT是一次又一次地调用PUT的幂等操作将导致相同的结果。
因此,当PUT是幂等的时,POST不是幂等的。
`There is also PATCH` -->
当您只需要更新模型的少数属性时使用补丁。换句话说,部分更新。
答案 1 :(得分:0)
简单地说(没有双关语):
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
(这也意味着我们必须更改客户端(正在使用它的移动应用程序)。