调用它们执行的更新和插入API端点时PUT或POST HTTP动词?(PUT or POST HTT

2019-10-29 02:57发布

我有一个接收来自消费客户端应用程序“改变日志”一个基于REST的Web API(写在ASP.NET的核心2.1)。 这是一个包含所有,而这是在离线模式下工作的客户端应用程序进行了修改数据库中的JSON类。 一旦客户端应用程序上线,它通过发送API自最后一次同步发生的所有更改同步与在线/实时数据库的数据库。 所以它发出的API的变化设定/更改日志与一群UPDATE,INSERT和DELETE列出了各种表/对象。

在API方面,我不真正删除活动数据库事-我只是标志事情删除(所以我设置一个布尔值字段设置为true,即deleted = TRUE)。 因此从技术上讲,该API只在数据库上执行插入和更新。

现在,我在赔率上消费客户机应该怎么称呼这个“同步”的API端点。 它应该把它作为一个POST或PUT请求? 由于API实际上是既进行更新和插入...的HTTP动词是比较合适的? 它甚至关系呢?

Answer 1:

它更像是一个对流和按照惯例你有POST因为你正在做和解的情况。 我们推荐使用PUT创建资源,或使用POST更新资源。

另一个需要考虑的事情是,无论PUT和POST都是不安全的方法。 然而,PUT是幂等的,而POST不是。

为什么不使用使用PATCH

从我的书签- 在REST PUT与POST和REST API - PUT VS与现实生活中的例子PATCH



Answer 2:

我可以告诉你我的经验。 动词含义在休息是明确的,不能被误解。 不过,这并不涵盖所有情况。

通常我用PUT只是实体更新定义。 为了弥补我使用POST所有其他混合操作。

所以PUT API是公平的,干净,当你遇到一个POST,最好你挖一点点!



文章来源: PUT or POST HTTP verb when calling API endpoint which performs both UPDATE and INSERT?