使用Http Post发送状态数据是一种好习惯吗?

时间:2015-10-16 13:38:26

标签: rest http

我知道帖子通常用来告诉网络服务器存储东西,如果我只是想发送一些状态数据,那么正确的方法是什么?说,我是否发布了客户端状态?

3 个答案:

答案 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方法(单个资源用于PUTPATCH用于特定资源元素)。这是一个示例:

    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"和一个正确的状态消息,因为每个新请求都是一个新资源。