(为简单起见,名称与实物不同)
我们有一个带有Person表的SQL Server数据库。我们还有一个地址表,其中包含街道地址和ID。 person表具有PhysicalAddressId和WorkAddressId列以及普通Person数据。
现有Api,名为' People',它会带回Person对象列表。
现有的Person / {Id} api电话会带回特定的人。我被要求在该Person调用中添加地址和一些复杂的其他内容。与SELECT ... FROM Person Where ID =...
返回的对象(对于两个api调用)是相同的。 (创刊号?)。因此,当您调用Person时,将填充“地址”字段。但是在调用People时,只会填充Person相关字段。即它是从SELECT .. FROM Person
' likeable
'查询,而单个' By Id'来自复杂的存储过程。
问题在于,当您使用api时,通过调用特定的Person,您将获得一个填充的填充模型。但是List版本的物理地址'节点
是正确的做法,为列表与单个人(人物'模型列表和单一' ComplexPerson'模型)设置不同的类型?或者有更好的方法来处理这个问题。
答案 0 :(得分:3)
我认为你可以遵循其他原则并做这样的事情:
端点: 人/ {ID}
将返回:
Person{
id:
name:
etc
Address{
id:
name:
etc
}
}
然后,为了列表,你可以这样做
端点: 人
将返回:
People
[
Person{
id:
name:
etc
Address{
"href": "https://yourapi/address/{id}"
}
},
Person{
id:
name:
etc
Address{
"href": "https://yourapi/address/{id}"
}
}]
因此,当您调用链接到另一个资源的资源时,通常可以执行两项操作。
1)用实际资源填充它 2)添加指向您可以访问其他资源的链接。
要对此进行扩展,您可以添加查询字符串参数以更改行为,并让用户决定是否会看到链接或填充的资源。
通常最好只在返回列表时返回链接,以减少服务器必须访问的资源量。