我不知道标题是否足够清晰,但这是全局:
我需要拥有完全相同的API端点来访问两个(和仅两个)不同公司(它们是更大的父母公司的一部分)的数据。然后这些应该返回不同的结果。
有一些选项可以区分客户的调用:
/companyA/users
和/companyB/users
等等; /users?company=A
; 对这些选项(或任何其他想法)的想法?
答案 0 :(得分:2)
我强烈建议您使用查询参数。自定义标头是一个坏主意,因为中间服务器(代理,缓存等)可能会或可能不会将它们保留在请求/响应中。将公司嵌入URL非常有限。当需求发生变化并且您需要同时从多个子公司获得用户时,会在6个月内发生什么?添加新端点?
从概念上讲,API是针对母公司的,或者它不会有多个子公司的数据。您想要过滤掉碰巧在公司A或公司B工作的母公司的用户。这就是查询参数的设计目的。
答案 1 :(得分:1)
自定义标题肯定不是一个选项,即使一些设计不佳的rest apis使用它们。
查询参数通常用于基于某些东西过滤集合,例如日期范围或类似的东西,但将它们用于您想要使用它们的目的并不是罪过。
但是,尽管如此,我会遵循子资源方法,就像你在第一个例子中所展示的那样。这是更容易理解的,客户不必弄清楚如何调用查询参数以及它们中有多少。你只想要某个公司的用户。 :)