同一微服务中多个资源的 RESTful URL

问题描述

我们正在开发一个无服务器应用程序(AWS API 网关、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

在您的示例中,鉴于组有很多用户,而用户有很多组(多对多关系),我认为您提供的路由方案是正确的。