【问题标题】:Exposing IDs in a SaaS multi-tenant RESTful application在 SaaS 多租户 RESTful 应用程序中公开 ID
【发布时间】:2014-11-16 14:15:12
【问题描述】:

我们正在构建一个多租户应用程序,将用户记录存储在一个通用的“用户”表中。每个用户记录都有一个tenantID,以保持数据隔离。

我们将 API 公开给客户端,并且 API 对个人用户执行操作。

GET /api/users/{id}

公开我们的 TABLE id 似乎是不对的,它是表中所有“用户”的自动生成的主键。是否有更好的做法,例如为每个用户生成一个唯一的哈希并将其设为我们为客户端公开的“ID”?或者我们应该为表做一种不同的主键,比如不暴露增量计数的散列或复合主键?或者我们应该为每个客户的用户创建一个递增的整数“ID”?谢谢!

【问题讨论】:

    标签: rest database-design


    【解决方案1】:

    有一些原因不使用数据库自​​动生成的 id 作为资源标识符:

    • 它们对用户不友好:GET /api/users/5463287 vs /api/users/bob
    • 它们可能会随着数据库更新/恢复而改变
    • 它们毫无意义:任意 id 不包含任何语义

    在这种情况下,资源标识符应该是具有语义的唯一字母数字(如果有意义)

    【讨论】:

      猜你喜欢
      • 2014-07-27
      • 2012-07-24
      • 2012-05-17
      • 2012-04-10
      • 1970-01-01
      • 2013-04-23
      • 1970-01-01
      • 2017-01-28
      • 2017-03-02
      相关资源
      最近更新 更多