REST API设计与复合ID

6

如何设计具有复合ID的对象的RESTful资源是最好的方式?例如,假设我有一个用于获取人员记录列表的 GET /people 资源。一个人没有单一的ID; 相反,它由firstName、lastName和birthdate标识。我应该如何设计资源来获取单个人?


2
顺便说一下,虽然很少见,但两个姓名相同的人可能会有相同的生日。因此,这对于主码来说是一个相当糟糕的选择。 - meskobalazs
1
这是一个假设性的例子。请在假设firstName、lastName和birthdate保证唯一性的情况下操作。 - jwzirilli
2
我同意@jwzirilli的观点 - 你应该使用一种(几乎)保证人员唯一性的机制。例如社会安全号码就是这样一个人员编号。如果在您的系统中,firstNamelastNamebirthday的组合可以保证创建唯一标识符,那么您也可以使用矩阵参数GET /people;firstName=John;lastName=Smith;birthday=1973-12-01 - Roman Vottner
3个回答

5
我会使用以下其中一种变体:
GET /people/John/Smith/1973-12-01

或者

GET /people/John,Smith,1973-12-01

1

评论中已经提到的,如果您没有确保唯一性的单个标识符,可以考虑矩阵变量

GET /people;firstname=John;lastname=Smith;birthday=1973-12-01

0

关于什么:

GET /people/firstName/X/lastName/Y/birthdate/AAAA-MM-DD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接