与其他用户共享文件的端点的正确URI是什么?

时间:2019-05-29 12:48:30

标签: api http

我一直在阅读有关API定义的最佳实践,最常见的建议之一是确保您的端点定义在路径中不包含动词(对于资源,仅应使用名词)以及路径参数的值)。相反,应将HTTP方法用作“动词”以对资源执行操作。

问题是,假设我想创建一个端点,该端点允许用户与其他用户共享文件。我这样做的方式如下:

POST /api/file/{file_id}/share/

具有如下所示的请求正文

{ users: [1, 2, ... , N] }

对我来说,这是最直观的方法,因为我正在对文件资源执行操作,但是没有一种HTTP方法足以描述该操作,因此我不得不使用/ share /以便能够指定要执行的操作。

因此,我违反了仅在端点路径中使用名词的最佳做法,但除添加查询参数外,我看不到其他任何可行的方法,但这些通常用于过滤器,排序等。

定义这种端点的适当方法是什么?

1 个答案:

答案 0 :(得分:0)

我认为您的解决方案可以。您可以将/share作为/api/file/{file_id}的子资源-特定文件的共享状态。

因此,要与其他用户共享(尚未共享)文件:

POST /api/file/{file_id}/share

并更改与该文件共享的用户列表:

PUT /api/file/{file_id}/share

对我来说,/share是一个不错的选择-简洁明了。但是,如果您真的想使用名词而不是动词,则可以使用/sharing/share-status等。