设计一个 RESTful API。我有两种识别资源(个人数据)的方法。通过数据库生成的唯一 ID,或通过为每个人输入的社会安全号码 (SSN)。SSN 应该是唯一的,但可以更改。
使用 ID 对我来说最方便,因为它保证是唯一的,并且不会改变。因此,资源的 URL 也始终保持不变:
GET /persons/12
{
"name": Morgan
"ssn": "840212-3312"
}
使用 SSN 的理由是它更能被 API 客户端提供信息和理解。SSN在周边系统中也使用较多:
GET /persons/840212-3321
{
"name": Morgan
"id": "12"
}
所以问题是:我是否应该采用第一种方法,并避免 SSN 可能发生变化的一些实施难题。也许提供一些从 SSN 转换为 ID 的辅助方法?
或者采用第二种方法。提供更多信息的 API。尽管必须处理一些不那么 RESTful 的奇怪问题,其中 URL:s 可能由于 SSN 更改而更改?