设计API并寻找一些建议。
以下是行动:
publish
:发布文档(POST)update
:更新文档(PUT或PATCH)unpublish
:将文档记录下来,以便稍后将其放入(?)delete
:完全删除文档(删除)有什么想法吗?
谢谢! 马特
答案 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抱怨。 ;)