RESTful设计:区分取消发布和删除

时间:2013-01-10 05:40:52

标签: api rest restful-architecture

设计API并寻找一些建议。

以下是行动:

  • publish:发布文档(POST)
  • update:更新文档(PUT或PATCH)
  • unpublish:将文档记录下来,以便稍后将其放入(?)
  • delete:完全删除文档(删除)

有什么想法吗?

谢谢! 马特

1 个答案:

答案 0 :(得分:2)

  • 更新和删除非常明显,就像你拥有它们一样。

  • 您认为“发布”与“创建”相同吗? “发布”可能意味着获取您创建的文档并将其公开显示。想一想的一种方法是,你只能创建一次文档,但是你可以多次发布和取消发布它。

您可能会考虑文档的生命周期,以及在“取消发布”之后可以使用它做什么。这取决于你想要的顺序:“创建(发布?)...取消发布...发布...取消发布...删除”要做。如果发布/取消发布不会创建与删除不同的任何内容,那么您可以放弃它们并完全避免复杂性。

  • 纯粹的REST回答是在表示中提供一个属性:{...“published”:true ...}并让客户端PUT更新以更改该状态。如果该状态发生变化,则会触发发布或取消发布文档所需的任何处理。

  • 但是,我在一个对此感到不舒服的团队,因为在公开和技术上,发布文档可能会产生重大影响。因此,他们选择将操作视为POST“数据处理”请求(如HTTP规范所提供),并提供POST URL以“发布”和“取消发布”文档。

  • 还有其他一些选择。就像把POST作为附加动词一样,并提供一个“发布列表”URI,允许你将文档添加到已发布的列表中,进行任何所需的处理:

    POST ht_p://.../documents {文件}

    POST ht_p://.../published-documents {id =}

    删除ht_p://.../published-documents/ {id}

    删除ht_p://.../documents/ {id}

编辑:打破了prentend URI,因为stackoverflow抱怨。 ;)