在 REST 中同步操作使用什么方法
in REST what method to use for the sync operation
用户上线后同步数据涉及 Insert
和 Update
(Upsert
),我将在单个请求中发送这两种记录 (array
) 然后服务器遍历记录以确定插入或更新。
我的问题是使用POST
还是PUT
?
另外,来自服务器 (JSON) 的响应在其正文中应该如何处理?发送的数据是一个数组,例如
{
"ids" : "15,16,17",
"success" : true
}
编辑:
响应代码应该是什么,它有创建和更新操作:
200 OK
201 Created
REST 不是 CRUD。将 HTTP 方法映射到 CRUD 操作是一些框架引入的约定,但它与 REST 无关。阅读 this answer 以获得一些说明。
A PUT
是忽略资源当前状态的完整替换。想想 shell 中的 mv
命令。如果目的地上没有任何内容,它就会创建它。如果有东西,它会完全替换,忽略那里的任何东西。这就是 PUT
应该如何工作。理想情况下,您的应用程序应该具有 PUT
的统一实现,它与支持该方法的任何 URI 的工作方式完全相同..
A POST
提交要由目标资源根据预定义规则处理的负载。这意味着您可以将 POST
用于 HTTP 协议尚未标准化的任何操作。
在您的情况下,它显然不是完全替代品,因此 PUT
并非如此。使用 POST
.
用户上线后同步数据涉及 Insert
和 Update
(Upsert
),我将在单个请求中发送这两种记录 (array
) 然后服务器遍历记录以确定插入或更新。
我的问题是使用POST
还是PUT
?
另外,来自服务器 (JSON) 的响应在其正文中应该如何处理?发送的数据是一个数组,例如
{
"ids" : "15,16,17",
"success" : true
}
编辑:
响应代码应该是什么,它有创建和更新操作:
200 OK
201 Created
REST 不是 CRUD。将 HTTP 方法映射到 CRUD 操作是一些框架引入的约定,但它与 REST 无关。阅读 this answer 以获得一些说明。
A PUT
是忽略资源当前状态的完整替换。想想 shell 中的 mv
命令。如果目的地上没有任何内容,它就会创建它。如果有东西,它会完全替换,忽略那里的任何东西。这就是 PUT
应该如何工作。理想情况下,您的应用程序应该具有 PUT
的统一实现,它与支持该方法的任何 URI 的工作方式完全相同..
A POST
提交要由目标资源根据预定义规则处理的负载。这意味着您可以将 POST
用于 HTTP 协议尚未标准化的任何操作。
在您的情况下,它显然不是完全替代品,因此 PUT
并非如此。使用 POST
.