在公司薪资系统的范围内,让我们假设有一个PERSON资源,EMPLOYEE就是它的一个特例。是可以接受的:
POST /api/v1/employees
{
personId = 1, //existing Person
salary = 19,
departmentId = 2
}
这增强了使其成为员工的现有人员。
在这种情况下,使用此人的原始ID来引用员工是否可以接受:
GET /api/v1/employees/1
?
答案 0 :(得分:1)
我假设你有一个Person类和一个从Person扩展的Employee。如您在JSON中提到的,Employee将拥有更多字段,如薪水,部门ID等。
您是否有另一个端点可以访问人员?比如GET /api/v1/persons/1
?
或者所有访问都是通过GET /api/v1/employees/1
?
它可以使用相同的id,因为它是第一个的扩展。我猜你可能正在使用同一个表来存储这两个用户,这就是这个用例出现的原因。
使用继承资源的示例,可以使用资源中带有@type的单个端点来识别它们。
PersonResource(将此视为基类) EmployeeResource(从EmployeeResource扩展)
对于员工资源:
{
"someOtherElement": "value",
"person" : {
"@type" : "EmployeeResource",
"faxNumber" : "35635636",
"email" : "test@gmail.com",
"phone" : "2503334444",
"contactName" : "name",
"firstName" : "Owner",
"lastName" : "lastName"
...
"address" : {
"@type" : "InternationalAddressResource",
"province" : "AB",
"country" : "Canada",
...
}
}
}
对于IndividualResource:
{
"someOtherElement": "value",
"person" : {
"@type" : "PersonResource",
"email" : "test@gmail.com",
"firstName" : "Owner",
"lastName" : "lastName"
...
"address" : {
"@type" : "PostalAddressResource",
"province" : "AB",
"country" : "Canada",
...
}
}
}