调用同时执行UPDATE和INSERT的API端点时是PUT还是POST HTTP动词?

时间:2018-09-12 07:47:05

标签: rest api asp.net-core-webapi httpverbs

我有一个RESTful Web API(用ASP .Net Core 2.1编写),该API从使用方的客户端应用程序接收“更改日志”。这是一个JSON类,其中包含在客户端应用程序以脱机模式工作时对数据库执行的所有修改。客户端应用程序上线后,它将向API发送自上次同步以来发生的所有更改,从而将其数据库与在线/实时数据库同步。因此,它向API发送了一个变更集/变更日志,其中包含用于各种表/对象的一堆UPDATE,INSERT和DELETE列表。

在API方面,我实际上并未从实时数据库中删除任何内容-我只是将内容标记为已删除(因此我将布尔字段设置为true,即deleted = true)。因此从技术上讲,该API仅对数据库执行INSERTS和UPDATES。

现在,在使用客户端应如何调用API的“同步”端点方面,我有些矛盾。它应该将其称为POST还是PUT请求?由于API实际上同时执行UPDATE和INSERTS ...哪个HTTP动词更合适?甚至有关系吗?

2 个答案:

答案 0 :(得分:1)

它更像是对流,并且按照惯例,在进行对帐时,您需要进行POST。建议使用PUT创建资源,或使用POST更新资源。

要考虑的另一件事是PUT和POST都是不安全的方法。但是,PUT是幂等的,而POST不是。

为什么不使用PATCH

从我的书签-PUT vs. POST in RESTREST API - PUT vs PATCH with real life examples

答案 1 :(得分:1)

我可以告诉你我的经验。静止的动词meanings清晰易懂,不会被误解。但这并不涵盖所有情况。

通常,我将PUT仅用于定义的实体更新。为了涵盖所有其他混合操作,我使用POST。

因此,PUT API是公平而干净的,当您遇到POST时,最好多挖一点!