首页 > 解决方案 > 同一微服务中多个资源的 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

在同一个微服务中可以有不同“基础”的端点吗?

标签: restmicroservicesaws-api-gatewayserverless-frameworkaws-serverless

解决方案


就像软件中所有好的答案一样,这取决于!

我的路由理论是询问需求:你能在没有组 ID 的情况下查找用户吗?您可以查找没有用户 ID 的组吗?

如果任何一个的答案都是“是”,那么该资源应该有自己的路线。

将其与多租户系统进行比较,其中一个组织有许多小部件。小部件完全属于一个组织,因此您永远不会直接查询该小部件。

鉴于此,我们有:

/orgs/:orgId - get/put/post org info
/orgs/:orgId/widgets/:widgetID - get/put/post widget info

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


推荐阅读