我知道帖子通常用来告诉网络服务器存储东西,如果我只是想发送一些状态数据,那么正确的方法是什么?说,我是否发布了客户端状态?
答案 0 :(得分:1)
如果要更新现有资源的状态,则必须使用PUT
方法。但后者对应于整个状态的更新,即您需要发送所有字段。如果要进行部分更新,则应考虑PATCH
。您只能发送字段或使用JSON Patch格式。
以下是一些示例:
完整更新:
PUT /someresource/someid
Content-Type: application/json
{
(...)
"status": "some status"
}
部分更新:
PATCH /someresource/someid
Content-Type: application/json
{
"status": "some status"
}
204 No content
使用JSON补丁进行部分更新:
PATCH /someresource/someid
Content-Type: application/json
[
{
"op": "replace",
"path": "/status",
"value": "some status"
}
]
204 No content
如果"发送一些状态数据"对应于在数据存储区中添加内容,您应该考虑在列表资源上使用POST
方法(单个资源用于PUT
,PATCH
用于特定资源元素)。这是一个示例:
PUT /someresource/
Content-Type: application/json
{
(...)
"status": "some status"
}
204 No content
Location: http://.../someresource/newid
以下是一些可以帮助您的其他链接:
希望它能帮到你, 亨利
答案 1 :(得分:1)
如果您没有更新任何内容,那么POST就是您应该使用它的方法。
答案 2 :(得分:1)
这取决于您的使用案例。在严格的休息环境中,thierry的答案是正确的。但是,当我每天使用休息金融服务时,我必须保存所有数据而不依法进行任何更改(例如可追溯性)。在我的情况下,我不能使用严格的休息,所以我使用POST与整个对象对其属性进行一次或多次更改。服务器响应" 201 Created"和一个正确的状态消息,因为每个新请求都是一个新资源。