RESTful API设计,命名绘图端点

RESTful API设计,命名绘图端点,rest,api-design,Rest,Api Design,在为创建资源的“草稿”版本命名端点时,哪一种做法是最佳做法 发布>>/posts { title: 'My Post', body: 'The content of my post', status: 'DRAFT', } 还是最好: 发布>>/posts/drafts { title: 'My Post', body: 'The content of my post', } 从我在有效负载上看到的情况来看,草稿只是资源的状态。您可以使用PUT来更新它

在为创建资源的“草稿”版本命名端点时,哪一种做法是最佳做法

发布>>
/posts

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

发布>>
/posts/drafts

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

从我在有效负载上看到的情况来看,草稿只是资源的状态。您可以使用PUT来更新它


您是否可以解释更多关于您为什么要在URI路径中起草?

就像我所说的大部分事情一样。在使用REST时,一般的假设是您拥有资源集合。这就是为什么最常见的命名约定是在命名端点时使用复数

当我看到一个名为
/posts
的端点时,我会假设通过访问它,我会收到一组帖子。类似地,通过调用
/posts/{id}
我应该会收到一篇带有特定id的帖子。 资源集合也相互嵌入-当我看到一个端点
/posts/{id}/drafts
时,我会假设我将获得具有给定id的文章的草稿

现在的问题是,您是想将数据作为两个独立的集合(必须以某种方式进行同步),还是想将其作为嵌入式集合?如果是第一个,则可以有两个端点
/posts
/drafts
。如果是第二个,则应使用根端点
/posts
,然后使用
/posts/{id}/drafts


但是,如果一篇文章没有草稿集,您可以只使用一个
/posts
端点,而不指定任何其他内容,因为这将打乱API的设计。正如您的第一个建议一样。

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