【问题标题】:HTTP PATCH ADD/Remove field on resourceHTTP PATCH ADD/Remove 资源上的字段
【发布时间】:2015-05-28 12:53:25
【问题描述】:

HTTP PATCH 用于资源的部分更新。根据我的理解,可以对与 PATCH 相关的资源进行以下更新(可能更多,但我需要确切知道这两者的处理方式不同)

  1. 更新客户资源中的手机号码等字段
  2. 在现有客户资源上添加新的电话号码字段,例如电话号码[4] 作为新字段引入

我只想知道 PATCH 是否应该处理第二种情况?如果是,那么它应该如何以及它与第一个有什么不同?

【问题讨论】:

    标签: rest


    【解决方案1】:

    PATCH 需要一种能够描述一组更改以修改目标资源的文档格式。格式本身并没有被 HTTP 标准化,您可以选择要使用的格式。这可能是一个简单的 diff 文件,或者是专为序列化格式设计的文件,例如 JSON-patch 格式。

    考虑到这一点,PATCH 可用于任何可以由您决定使用的修补算法执行的部分更新。如果 Customer 资源的媒体类型允许将电话号码添加为新字段,那么使用 PATCH 来添加它是非常好的,前提是使用的修补算法可以执行添加。

    【讨论】:

    • 嗨佩德罗.. 感谢您的回答。 JSON-patch 可能是可以在这里使用的好选择之一。你知道其他的修补算法吗?
    【解决方案2】:

    是的,您可以使用 PATCH 方法,但我认为在您的情况下(第二种情况)使用方法 POST 更方便:

    POST /users/<userid>/phones
    Content-type: text/plain
    +33 3 12 34 56 78
    
    201 Created
    

    已编辑:

    根据您的评论,PATCH 方法就是您所需要的。以下是一些可以帮助您为请求定义有效负载格式的链接:

    否则您会注意到 OData 直接在负载中提供数据。请参阅此链接http://www.odata.org/getting-started/basic-tutorial/,“更新实体”部分。

    希望对你有帮助, 蒂埃里

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-25
      • 2022-07-06
      • 2017-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2016-10-24
      相关资源
      最近更新 更多