REST API资源结构,其中有多个"所有者"

时间:2017-06-07 12:14:38

标签: rest api restful-architecture restful-url

我很难看到如何构建REST API,其中多个所有者可能使用相同的资源。例如,如果有usersorganizations,并且每个都有imageslocations。图像和位置是一个数据库字段,对于用户和组织来说都是一样的......我可以看到两种基本的方法来实现它

单独的端点:

POST /users/:userID/documents
GET /users/:userID/documents/:id
POST /org/:orgID/documents
GET /org/:orgID/documents/:id

独立端点的优点:逻辑干净,一切都非常明显

单独端点的缺点:端点之间有很多代码复制。

共享端点:

POST /documents
GET /documents/:id

单独端点的优点:总体端点较少,代码复制次数较少。

不同端点的缺点:逻辑变得混乱,IDK是发送orgIDuserID请求的最佳方式(实际上没有创建新的/documents资源中的端点。我可以使用查询字符串,但这感觉不对...(IDK,如果它是错误的)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这完全取决于API的用例场景。

如果流程通常是请求用户/组织及其各自的文档,则单独的端点没有任何问题。它也不一定意味着代码重复 - 您可以在后端使用某种常见的DocumentRepository,在多个地方使用。

但是,如果要求只是搜索/显示文档,查询字符串可能是您最好的选择:

double result = Math.sin(Math.toRadians(90))