2013-11-03 24 views
3

想象strutured这样一个简单的文件管理Web服务:在RESTFul API中,恢复/回滚操作的正确http动词是什么?

document/ 
    GET -> retrieves all documents 
    POST -> creates a new document 

document/[id] 
    GET -> retrieves the "latest" revision of document specified by ID 
    POST -> creates a new revision of the document 

document/[id]/revision 
    GET -> retrieves all revisions of the document 
    POST -> Alias to POST->document/[id] 

document/[id]/revision/[revisionID] 
    GET -> retrieves the specified revision of the document 

现在,让我们说,我想回滚一个文件到以前的任意版本(例如,从版本5比3)。

在视REST风格来看,什么ROUTE和应该使用什么动词对于这种操作的?我应该为回滚操作创建一个新的动词吗?

请记住,在回滚操作中不会删除任何内容。在内部,服务器只是识别最新的不同版本号。

+0

从RESTful的角度来看,路由并不重要,方法取决于操作是否是幂等的。试图回滚到与当前版本相同的版本应该什么也不做或返回一个错误? –

+0

@PedroWerneck不应该做任何事情 – Tivie

回答

6

因为你必须为每个版本的表示可用,回滚操作应该是幂等,最直接的方法是简单地做一个PUTdocument/[id]GET document/[id]/revision/[revisionid]内容,为revisionid你想document/[id]设置为。

相关问题