具有复合ID的RESTAPI设计

具有复合ID的RESTAPI设计,rest,http,Rest,Http,为具有复合id的对象设计RESTful资源的最佳方法是什么?例如,假设我有一个用于获取人员记录列表的GET/people资源。一个人没有一个id;相反,它是通过名字、姓氏和出生日期来识别的。我应该如何设计资源以获得一个人?关于: GET /people/firstName/X/lastName/Y/birthdate/AAAA-MM-DD 我将使用以下变体之一: GET /people/John/Smith/1973-12-01 或 正如前面已经提到的,如果你没有一个唯一的标识符来确保唯一性

为具有复合id的对象设计RESTful资源的最佳方法是什么?例如,假设我有一个用于获取人员记录列表的
GET/people
资源。一个人没有一个id;相反,它是通过名字、姓氏和出生日期来识别的。我应该如何设计资源以获得一个人?

关于:

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

我将使用以下变体之一:

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


正如前面已经提到的,如果你没有一个唯一的标识符来确保唯一性,你可以考虑矩阵变量:

GET/people;名字=约翰;姓氏=史密斯;生日=1973-12-01

顺便说一下,虽然很少见,但两个同名的人可以拥有相同的比特日。所以对于PK来说,这是一个很糟糕的选择。这是一个假设的例子。请假设名字、姓氏和出生日期保证唯一性。我同意@jwzirilli-你应该使用(几乎)保证人的唯一性的机制。社会保险号码f.e.将是一个适用于个人的号码。如果在您的系统中,
firstName
lastName
birth
的组合保证创建唯一标识符,您还可以使用:
GET/people;名字=约翰;姓氏=史密斯;生日=1973-12-01
GET /people/John,Smith,1973-12-01