2017-02-25 52 views
0

命名一个端点以创建最佳实践的“草稿”版本的资源时?REST风格的API设计,命名起草端点

POST >>/posts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
    status: 'DRAFT', 
} 

或者是更好的:

POST >>/posts/drafts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
} 
+1

http://stackoverflow.com/questions/6845772/rest-uri-convention-singular-or-plural-name-of-resource-while-creating-it –

回答

0

从我上有效载荷看到,草案只是状态资源。你可以使用PUT来更新它​​。

你能解释一下为什么你想在URI路径中进行DRAFT吗?

+0

'PUT'是更换整个实体,' PATCH' - 用于部分更新。 –

0

与我说的大部分事情都有关系。使用REST时的一般假设是您已获得资源集合。这就是为什么最常见的命名约定是在命名端点时使用复数形式。

当我看到终端名为/posts时,我假设通过对它进行GET操作,我会收到帖子的集合。同样,通过拨打/posts/{id}我应该收到一个特定ID的帖子。 资源集合也彼此嵌入 - 当我看到端点/posts/{id}/drafts时,我会假设我将为具有给定ID的帖子获取草稿。

现在的问题是这样的 - 你想把你的数据作为两个单独的集合(你必须以某种方式同步)或者你想坚持这个嵌入集合?如果第一个则可以有两个端点/posts/drafts。如果第二个,那么你应该去与根端点/posts,然后/posts/{id}/drafts

但是,如果帖子没有草稿集合,那么您可以简单地使用一个/posts端点,并且不要指定任何其他内容,因为这会混淆API的设计。就像你的第一个主张一样。