我很难看到如何构建REST API,其中多个所有者可能使用相同的资源。例如,如果有users
和organizations
,并且每个都有images
或locations
。图像和位置是一个数据库字段,对于用户和组织来说都是一样的......我可以看到两种基本的方法来实现它
POST /users/:userID/documents
GET /users/:userID/documents/:id
POST /org/:orgID/documents
GET /org/:orgID/documents/:id
独立端点的优点:逻辑干净,一切都非常明显
单独端点的缺点:端点之间有很多代码复制。
共享端点:
POST /documents
GET /documents/:id
单独端点的优点:总体端点较少,代码复制次数较少。
不同端点的缺点:逻辑变得混乱,IDK是发送orgID
或userID
请求的最佳方式(实际上没有创建新的/documents
资源中的端点。我可以使用查询字符串,但这感觉不对...(IDK,如果它是错误的)
有什么建议吗?
答案 0 :(得分:1)
这完全取决于API的用例场景。
如果流程通常是请求用户/组织及其各自的文档,则单独的端点没有任何问题。它也不一定意味着代码重复 - 您可以在后端使用某种常见的DocumentRepository,在多个地方使用。
但是,如果要求只是搜索/显示文档,查询字符串可能是您最好的选择:
double result = Math.sin(Math.toRadians(90))