Api 在REST中,同步操作使用什么方法

Api 在REST中,同步操作使用什么方法,api,rest,post,patch,put,Api,Rest,Post,Patch,Put,一旦用户联机,同步数据涉及到插入和更新两个方面(Upsert),我在一个请求中发送这两种记录(array),然后服务器迭代记录以确定插入或更新 我的问题是使用POST还是PUT 还有,来自服务器的响应(JSON)在它的主体中应该是什么样的?例如,发送的数据是一个数组 { "ids" : "15,16,17", "success" : true } 编辑: 响应代码应该是什么,它具有创建和更新操作: 200 OK 201 Created 休息不是积垢。将HTTP方法映射到CRUD操作是

一旦用户联机,同步数据涉及到插入和更新两个方面(
Upsert
),我在一个请求中发送这两种记录(
array
),然后服务器迭代记录以确定插入或更新

我的问题是使用
POST
还是
PUT

还有,来自服务器的响应(JSON)在它的主体中应该是什么样的?例如,发送的数据是一个数组

{
  "ids" : "15,16,17",
  "success" : true
}
编辑:

响应代码应该是什么,它具有创建和更新操作:

200 OK
201 Created

休息不是积垢。将HTTP方法映射到CRUD操作是一些框架引入的约定,但它与REST无关。请阅读以了解有关该问题的一些澄清

PUT
是忽略资源当前状态的完整替换。想象一下shell中的
mv
命令。如果目的地上没有任何东西,它就会创建它。如果有什么东西,它会完全替换,忽略里面的任何东西。这就是
PUT
的工作原理。理想情况下,应用程序应该有一个统一的
PUT
实现,该实现与支持该方法的任何URI的工作方式完全相同

POST
根据预定义的规则提交要由目标资源处理的有效负载。这意味着您可以对HTTP协议尚未标准化的任何操作使用
POST


在您的情况下,它显然不是一个完全的替代品,因此它不是
PUT
的情况。使用
POST

PUT用于插入和POST用于更新这是一个同步操作的
PUT
(类似于源代码控制系统中的提交)。@salilvishnuKapur我想你的意思是反之亦然,PUT用于更新和POST用于插入,但sync同时具有插入和更新解释以及答案链接,最后,什么状态代码(200201)对同步操作有意义最后,为了清除PUT vs.PATCH,假设一个表student(id,name),如果我更新id=1的学生的名称,它就是一个补丁。如果我将整行(1,'abc',)完全替换为(2,'xyz'),则这是一个PUT操作。对吗?如果创建了新资源,请使用201。关于这些方法,您是正确的,但请记住,理想情况下,您的应用程序应该支持这两种方法,并且由客户端决定使用、放置或修补什么。好的,关于状态代码201,也可能发送的记录最终都以更新操作结束,或者很可能同时发生插入和更新,或者只发生插入。201可能并不总是这样,我希望服务器端不会像使用UPSERT SQL语句那样进行跟踪。在这种情况下,您建议200行吗?如果创建了资源,请使用201,如果没有,请使用200。响应代码不应根据方法或资源而固定。这取决于实际结果。