构建链接的后端查询和存储

问题描述 投票:0回答:1

这是一个基本问题,我希望能得到一些见解。我正在前端构建 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 设计的初学者,所以请随意提供一些我可以用来继续前进的快速知识。关于丰富的学习资源的推荐也很棒(也欢迎书籍)。

rest backend
1个回答
1
投票

它可以而且确实是双向的。

但是,如果您想要一个文档丰富的出色 API 示例,您可以在设计 API 时将其用作示例,我建议您查看 stripe 的 API。

这是他们关于您的用例的文档,他们称之为“扩展”。 他们将其设为可选。 默认情况下,您会获取 id,或者您可以请求内联扩展结果,在这种情况下,它们会获取整个对象。

https://stripe.com/docs/api/expanding_objects

© www.soinside.com 2019 - 2024. All rights reserved.