【发布时间】:2021-10-20 17:37:17
【问题描述】:
化妆场景:
假设我正在构建一个 RESTful Web API 后端来管理会员的付款计划:
- 它是为会员准备的,所以您必须向我们注册。每个成员在内部都有一个成员 ID。
- 有多种付款计划:6 个月的 0% 利息、12 个月的 0% 利息等。每个付款计划都有一个内部 ID。
- 会员和付款计划之间的关系是多对多的。
- 每个成员一次也有 1 个活动计划。您可以更改它,但会员只能使用 1 个有效计划。
现在,如果我想设计一个 API 端点来返回有关会员有效付款计划的信息,我通常会这样做:
/members/{member-id}/plans/active
我知道可能是a bad idea to put state on the URI(我对此有一个单独的问题),但请多多包涵。
现在是棘手的部分:公司的政策规定我不能在 URI 中包含成员 ID。他们将在 HTTP 标头中包含某种令牌,这是访问 RESTful API 端点所必需的,其中包含成员 ID。
顺便说一句,我的 API 应用程序是 ASP.NET Core Web API,在代码中创建过滤器来解析该令牌并将其转换为成员 ID 没有问题。只是我的 API URI 不能再有成员 ID。
在这种情况下你会如何设计 URI?
如果没有 URI 上的成员 ID,我的会是这样的
/plans/active
现在数据将全部由该成员 ID 驱动/过滤,并在 API 后端安全地进行。这正常吗?
【问题讨论】:
-
即使您的会员 ID 是 Guid 代表?你不能在你的 Uri 上使用 memberId?
标签: rest http design-patterns restful-url