如何在HTTP REST API中处理修订和子资源?

时间:2015-12-05 20:18:36

标签: api rest http version-control

背景

我正在为讨论设计RESTful HTTP API。每个讨论都包含元数据和一组注释。网址可能如下所示:

/discussions/:discussionId
/discussions/:discussionId/comments/:commentId

讨论有一个修订版:如果修改了元数据,或者添加,修改或删除了评论,则会更新讨论的修订版。此外,optimistic concurrency control用于确保客户端将更新应用于最新的讨论版本。例如,

PUT /discussions/42?revision=5ac79c

只有在5ac79c是服务器上的最新版本时才能成功。如果成功,则新的讨论修订将返回到表示中的客户端。对于非嵌套资源,可以以干净的方式处理所有操作(类似于CouchDB API)。子资源出现问题。

问题

在创建,更新或删除评论时,如何将讨论的新版本传达给客户?

例如:请求

PUT /discussions/42/comments/23?revision=5ac79c

在表示中返回讨论的新修订版?包含父资源的状态感觉不对。

任何提示?

Bonus:也许有更好的方法来传递当前的讨论版本,而不是附加查询字符串?revision=5ac79c?很明显,ETagIf-Match标头可用于指定修订版 - 但是,它们并未解决讨论修订用于评论的问题。

0 个答案:

没有答案