rest - 同一微服务中多个资源的 RESTful URL
问题描述
我们正在开发一个无服务器应用程序(AWS API Gateway、Lambda 和 Dynamo),将用户和组保存在同一个微服务中,因为它们存储在同一个 DynamoDB 表中。用户的 REST 端点如下所示:
/user/invites
/user/:userId/save
/user/:userId/activate
让组的端点看起来像这样是个好主意:
/groups/
/groups/add/
groups/:groupId/remove
/group/:groupId/addUser/:userId
在同一个微服务中可以有不同“基础”的端点吗?
解决方案
就像软件中所有好的答案一样,这取决于!
我的路由理论是询问需求:你能在没有组 ID 的情况下查找用户吗?您可以查找没有用户 ID 的组吗?
如果任何一个的答案都是“是”,那么该资源应该有自己的路线。
将其与多租户系统进行比较,其中一个组织有许多小部件。小部件完全属于一个组织,因此您永远不会直接查询该小部件。
鉴于此,我们有:
/orgs/:orgId - get/put/post org info
/orgs/:orgId/widgets/:widgetID - get/put/post widget info
在您的示例中,鉴于组有很多用户,并且用户有很多组(多对多关系),我认为您提供的路由方案是正确的。
推荐阅读
- php - 使用 PHP 从 MySQL 获取查询数据时出错
- python - 我正在尝试通过 Python 中的 ZEEP 客户端调用 SOAP API,但出现 SSL 错误
- mysql - 将数据库mysql工作台与android studio连接时,用户'root'@'laptop-xxx'(使用密码:是)的访问被拒绝。我可以知道是什么问题吗
- javascript - 尝试访问此 ref 将失败。你的意思是使用 React.forwardRef()
- reactjs - 反应按钮颜色不变
- python - 用于 CNN 实施的 shuffle 小批量中的关键错误
- html - 如何仅为标题添加另一个背景图像或颜色?
- mongodb - MongoDB中的GroupBy并从集合中获取所有值
- python - django 不渲染第一个
- javascript - Javascript/D3 - 绘制雷达图