我在REST API中有一组资源,让我们这样说:
GET /folders
[{ "id": "x", "watched": true }, { "id": "y", "watched": true }, ...]
我已经将“停止观看”命令实现为PATCH:
PATCH /folders/x { "watched": false }
实施“停止观看所有文件夹”的正确方法是什么? 我想到了
PATCH /folders { "watched": false }
但我不确定这是否有意义(集合本身没有watched
属性)。
或者它根本不应该在API级别上实现(而是由客户端迭代)? 但这似乎效率低下。
答案 0 :(得分:1)
我认为PATCH /folders { "watched": false }
是完全合适的。让实现决定如何使用给定的预期资源状态(您的JSON)表示修补文件夹。对资源表示的外观没有限制,它们应该是自描述的,因此在这种情况下,它们应该具有标准的内容类型,这就是全部。 (GET回答可能不同。)
我不建议您通过客户端迭代集合,因为它不是原子的,它可能随时丢失连接。您应该只发送一个关于此的请求。