web-services - REST 数组操作最佳实践

标签 web-services api http rest

我可以通过 REST 完全访问 foo 资源:

{
  "name": "foo",
  "tags": [
    "tag01",
    "tag02",
    "tag03"
  ]
}

我想删除 tags 数组中的 tag01

通常我会在没有 tag01 的情况下 GET\fooPUT\foo 返回。 在这种情况下,这个对象很小,所以没问题。

但让我们假设它要大得多。对于这种情况,我不喜欢下载和上传这些数据。经过一些谷歌研究,我发现了 http PATCH .我看起来正是我需要的。

我现在以PATCH方式请求

PATCH /foo/tags?op={add|delete}

要删除我会使用:

PATCH /foo/tags?op=delete

有了这些数据:

{
  "value": "tag01"
}

现在有两个我不喜欢的想法:

  • 查询字段 op - 是否有一些在 rfc 或 smth 中描述的默认名称。像这样
  • 请求数据中的成员 value - 这也是自由选择的名称

我觉得不对。

有没有其他方法可以通过 REST 操作数组?

在 PATCH 方式中是否有一些命名约定?

最佳答案

PATCH 的负载应该包含 "instructions describing how a resource currently residing on the origin server should be modified to produce a new version" .所有信息都应在有效负载中传递,而不是在查询参数中传递。

例如你可以发送:

PATCH /foo

[
  { 
    "op": "remove",
    "path": "/tags/0" 
  }
]

路径/tags/0 指向数组的第一个元素。其余元素应向左移动。

参见 JSON Patch draft了解更多详情。

关于web-services - REST 数组操作最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24011490/

相关文章:

c# - wowza streaming c# HTTP get 用于 livestreamrecord 的方法

php - 如何在 PHP 中访问 POST 数据?

java - 用于检索数据 block 的 Web 服务

java - tomcat、jdk、jre如何背书?

java - 尝试创建客户端服务库时 wsimport 失败

Java HttpsURLConnection - TwitchAPI - 更新 channel 信息

api - REST API 和 API key

java - 找不到类 : class java. util.HashMap 的消息正文编写器

windows - 如何从 Windows Vista Complete PC 备份中提取文件?

http - HTTP 升级机制的支持程度如何?