RESTful URI是否应公开数据库主键?

时间:2013-08-29 20:43:35

标签: database web-services rest jersey

我会保持简单。 Restful URI类似于:

example.com/rest/customer/1

“1”的最佳常见做法是什么。它是db生成的主键吗?

使用系统生成的主键让我觉得它不利于:

  1. 数据库合并
  2. 导入/导出数据
  3. 不使用主键有自己的一组问题。寻找关于这个主题的流行思想。

3 个答案:

答案 0 :(得分:5)

我希望id是主键,因为这是你识别记录的方式。如果你愿意,你有一个,你可以使用natural primary key例如某人的员工ID而不是surrogate key.

的身份

如果您的问题是整数而不是数据库主键(因此我猜可以猜测),您可以使用GUID代替。它们可以在应用程序或数据库中的客户端或服务器端生成。

他们会帮助进行数据库合并等,并保证它们是唯一的。

答案 1 :(得分:1)

如果您正确设计RESTful API,ID的编号方案选择将变得不透明,与API的使用者无关。

针对您的API编码的应用程序将使用您的表示中的超链接导航它,只要它们不尝试URI construction。应用HATEOAS的原则允许您无需担心使用数据库密钥作为资源ID。

答案 2 :(得分:0)

一般来说,没关系。

但是你应该总是将一个href作为你的唯一标识符返回给消费者,而不仅仅是一个ID。如果您只返回一个ID,这意味着他们必须知道资源所在的位置,并将该信息与ID相结合,以便为资源提出唯一请求。返回它们的href消除了耦合。