瞎扯淡 遇到一些关联数据,大家是如何设计 API 的?

stephen · 2015年03月19日 · 最后由 huobazi 回复于 2015年03月19日 · 2377 次阅读

比如一条 API,功能是获取一篇文章的详细信息,这篇文章会有一些评论的关联数据。 现在客户端有两个页面: 一个页面显示文章详细信息,但是不需要显示关联数据。 另外一个页面,显示文章详细信息还要显示关联数据。

问题是: 设计的 API 有两种方法: 一、url 是 article/show/1,返回文章的详细信息, 再设计多一条 API,comments?article_id=1,返回这篇文章的评论 二、就一条 API,article/show/1,返回文章的详细信息,把关联的 comments 作为其中一个属性一起返回

不好的地方: 第一种如果关联对象多了,一个页面访问几次 API。 第二种如果数据多了,一次返回数据量太大。

一般标准是怎样设计的?

  1. 使用 REST 风格的 API
  2. GET /articles/1?comments=true 通过参数开关 comments 的显示,只返回一定数量的 comments
  3. comments 做分页,调用 /articles/1/comments?page=2&per_page=10

articles/1

[{id: 1}, {}]

articles/1/comments

[{id: 1, comments: [{}]}, {}]

好的,谢谢各位!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号