一个简单的 REST API:
现在我们讨论的 API 扩展:
我现在对可以通过 PUT/DELETE 项/{ id }轻松访问的 DELETE 和 PUT 操作回收功能感兴趣。
问: 提供这样的 API 是否常见?
备选方案: 在单连接时代,多个请求发出多个请求是便宜的,而且由于一个更改要么成功要么失败,因此工作原子性更强。但是在 NOSQL 数据库时代,即使请求处理因内部服务器或其他原因而终止,列表中的一个更改可能已经发生。
[更新]
在考虑了 白宫网站标准和 Wikipedia: REST 示例之后,现在提出以下示例 API:
一个简单的 REST API:
顶级资源 API:
不支持或禁止在/项上放置和删除。
使用 POST 似乎可以在一个封闭的资源中创建新项,而不是替换而是附加。
HTTP 语义 POST 阅读:
通过追加操作扩展数据库
如果 PUT 方法需要替换完整的集合以返回 HTTP 语义引用的等价表示:
一个给定表示的成功 PUT 将表明,在同一目标资源上的后续 GET 将导致在200(OK)响应中返回一个等价的表示。
[ UPDATE2]
对于多个对象的更新方面,似乎更加一致的一个替代方法是 PATCH 方法。PUT 和 PATCH 之间的区别在 RFC 5789草案中描述为:
PUT 和 PATCH 请求之间的区别反映在服务器处理封闭实体以修改由 Request-URI 标识的资源的方式上。在 PUT 请求中,封闭的实体被认为是存储在原始服务器上的资源的修改版本,客户端请求替换存储的版本。但是,对于 PATCH,封闭的实体包含一组指令,描述如何修改当前驻留在原始服务器上的资源以生成新版本。PATCH 方法影响由 Request-URI 标识的资源,它也可能对其他资源产生副作用; 例如,PATCH 应用程序可能创建新资源或修改现有资源。
因此,与 POST 相比,PATCH 可能也是一个更好的主意,因为 PATCH 允许 UPDATE,而 POST 只允许附加一些意味着添加的内容,而不允许修改。
所以 POST 在这里似乎是错误的,我们需要改变我们提出的 API:
一个简单的 REST API:
顶级资源 API: