2014-09-22 103 views
1

我们构建的多租户应用程序将用户记录存储在公共“用户”表中。每个用户记录都有一个tenantID来保持数据隔离。在SaaS多租户RESTful应用程序中暴露ID

我们将API暴露给客户端,并且API对个别用户进行了操作。

GET /api/users/{id} 

公开我们的TABLE ID并不正确,它们是表格中所有“用户”的自动生成PRIMARY键。有没有更好的做法,比如为每个用户生成一个唯一的哈希值,并使得我们为客户端公开的“ID”?或者我们应该为表执行不同类型的主键,如不显示增量计数的散列或复合主键?或者我们应该为每个客户的用户创建一个递增的整数“ID”?谢谢!

回答

1

有一些理由不使用数据库自​​动生成的ID作为资源标识符:

  • 他们是不是用户友好:GET/API /用户/ 5463287 VS/API /用户/鲍勃
  • 他们可以跨数据库更新/恢复更改
  • 他们是没有意义的:任意IDS不包含任何语义

在这种情况下的资源标识符应该是唯一的字母数字与SEMA ntics(当这是有道理的)