在REST API

时间:2015-07-20 12:29:37

标签: rest

我们需要开发一个更新资源的REST API。 包括:

  • 更新属性值
  • 添加\删除属性

现在,我们有两种选择:

  • 使用PUT(遵循GET)
  • 使用PATCH

我们知道,PUT的原始含义是替换现有资源 - 因此,为了使用PUT并回答要求,我们应该启用API使用者,获取资源详细信息,并发送PUT请求所有细节,以替换旧的资源详细信息。 这样,我们允许他更新\ add \ remove属性。 但是......我们还需要处理并发更新。这可能应该使用optimistic-concurrent-control(例如使用if-modified-since标头)来完成。

或者,我们可以使用PATCH - 它的目的是部分更新资源。 PATCH - 具有特殊语法 - 允许更新\ adding \ removed属性,而无需提供完整的资源详细信息 - >所以我们不需要先获取资源详细信息。 在这里,无需处理并发更新。

我们认为正确的解决方案是PATCH。但… 我们查看了一些着名的REST API,但我们没有看到PATCH被广泛使用。 此外,我们看到一些(少数)关于使用PATCH的问题的文章(防火墙块,不支持开箱即用的客户端等等)。 例如:

How to use the PATCH method in HTTP adapters?

How do I stop Apache httpd from rejecting HTTP PATCH requests?

根据您的经验,我们应该使用正确的东西(PATCH),但风险拒绝来自消费者吗?或者我们应该使用GET + PUT并冒险/处理并发问题吗?

提前致谢!

0 个答案:

没有答案