这是一个基本问题,我希望能得到一些见解。我正在前端构建 api 控制器,之前(曾经)还没有构建后端。
我有这个简化的
User
对象。
User = {
id: number,
name: string,
followers: User[]
}
这不可行,因为它是递归的。相反,这在后端更有意义:
User = {
id: number,
name: string,
followerIDs: number[]
}
在我的前端,如果我想列出用户关注者的姓名,我需要两个请求,一个请求获取 ID,另一个请求将它们映射到用户。对我来说,在后端优化这一点并在一个请求中返回所有数据更有意义。
但这意味着我的终点将根据查询返回两种不同的形状。上面带有 followerID 的形状和:
User = {
id: number,
name: string,
followers: (User: {id, name, followerIDs})[]
}
实践中这样做了吗?还是只提出多个请求更可行?如果我想列出 x 个用户和每个用户的一些关注者,则需要 1 + x 请求才能获取所有信息,而第三种形状需要 1 个请求。
我是 API 设计的初学者,所以请随意提供一些我可以用来继续前进的快速知识。关于丰富的学习资源的推荐也很棒(也欢迎书籍)。
它可以而且确实是双向的。
但是,如果您想要一个文档丰富的出色 API 示例,您可以在设计 API 时将其用作示例,我建议您查看 stripe 的 API。
这是他们关于您的用例的文档,他们称之为“扩展”。 他们将其设为可选。 默认情况下,您会获取 id,或者您可以请求内联扩展结果,在这种情况下,它们会获取整个对象。