具有相同 API 端点的独立上下文的最正确方法

Most correct way to have separate contexts with the same API endpoints

不知道标题够不够清晰,全图如下:

我需要具有完全相同的 API 端点来访问两个(并且 两个)不同公司(它们是更大 "parent" 公司)。这些应该 return 不同的结果。

有几个选项可以区分客户端发出的调用:

关于这些选项的想法(或任何其他想法)?

自定义 headers 绝对不是一个选项,即使一些设计不佳的 rest api 使用它们。

查询参数通常用于过滤 collections 基于某些东西,例如日期范围或类似的东西,但将它们用于您想要使用它们的目的并不是罪过。

但是,综上所述,我会遵循子资源方法,就像您在第一个示例中展示的那样。它更易于理解,客户不必弄清楚您如何调用查询参数以及其中有多少。你只想要某个公司的用户。 :)

强烈建议您使用查询参数。自定义 headers 不是一个好主意,因为中间服务器(代理、缓存等)可能会将它们保留在 requests/responses 中,也可能不会。将公司嵌入 URL 是极其有限的。当需求发生变化并且您需要同时从多个 child 公司获取用户时,6 个月内会发生什么情况?添加新端点?

从概念上讲,API 是针对 parent 公司的,否则它不会包含多个 child 公司的数据。您想过滤掉恰好在公司 A 或公司 B 工作的 parent 公司的用户。这就是设计查询参数的目的。