我将用JSON代表我的问题,但任何接口语言都适用于此。
POST '/api/dog'
{
id: 1,
age: 8,
breed: 11
// Passing the breed name here doesn't make sense,
// since we don't want to assign the breedName to the breed id
}
GET '/api/dog/1'
{
// Retrieving the id here doesn't make sense,
// since we asked for it in our request
age: 8,
breed: 11,
breedName: 'Golden Retriever'
}
另一种选择是将字典与对象一起返回。这适用于集合,但单个结果很难。
GET '/api/dog'
{
dogs: [
{
id: 1, // not needed for ordered collections
age: 8,
breed: 11
},
{
id: 2,
age: 3,
breed: 4
},
{
id: 3,
age: 3,
breed: 11
}
],
breeds: [
{
id: 4,
name: 'Chiwawa'
},
{
id: 11,
name: 'Golden Retriever'
}
]
}
当然,这个问题也不仅限于名称 - 似乎总是会决定是否内联大型对象或仅仅是其ID。使用循环结构(即通过URL链接的网络图),不可能始终内联。同样,从不内联也是代价高昂的。
由于存在不可避免的权衡,我想了解最佳实践是什么。
我正在寻找人们发现有用的指导方针,但任何理论上的答案对我都有用。