API网址:隐式与显式租户ID

时间:2016-02-05 10:08:14

标签: api http caching multi-tenant

在多租户应用中,我有两种选择来公开我的资源:

  api.myapp.com/customer/{id}
  api.mayap.com/{tenant}/customer/{id}

我想知道暴露租户名称的利弊。在第一种情况下,租户名称作为标题字段给出,而第二种情况直接在URL中。

一方面,我确实希望拥有最干净,最简单的URL结构。由于所有资源ID都是UUID,因此拥有租户名称空间似乎是多余的。

另一方面,我不确定在URL中公开租户名称是否会使缓存更容易,或者我还没有考虑任何其他因素(监控,与第三方服务集成等)

从API中删除租户命名空间的缺点是什么?

在做出此选择时我应该考虑哪些因素?

1 个答案:

答案 0 :(得分:0)

我想建议使用 api.myapp.com/customer/{id}模型由于以下原因

  1. 如果您在URL中传递租户ID,如果租户ID未在Api层正确验证,则可能存在安全风险,例如登录使用是否可以访问该租户/实体/记录等< / LI>
  2. 网址不干净[正如你所说]
  3. 如果您向实体提供对其他租户的访问权限,则该网址模型会导致对谁拥有数据以及谁可以单独查看数据产生混淆。
  4. 请分享您对上述考虑的看法。