GraphQL与Go语言结合:解决REST API数据获取问题
1. REST API中的数据过度获取和不足获取问题
在REST API中,存在数据过度获取(Over - fetching)和数据不足获取(Under - fetching)的问题。
1.1 数据过度获取
当服务器发送客户端不需要的数据时,就会发生数据过度获取。例如,使用GitHub用户的REST API创建用户信息展示时,我们只需要用户的关注者、公共Gist、星标仓库和公司名称,但调用GitHub API(https://developer.github.com/v3/users/#get-a-single-user )获取用户“octocat”的信息时,返回的JSON包含37个字段,而我们仅需要其中4个字段,其余字段的数据通过网络传输到客户端,造成了带宽的浪费。
1.2 数据不足获取
数据不足获取指API服务器发送的响应不足以让客户端做出决策。这会导致客户端需要对不同端点进行后续API调用以获取数据,或者手动处理获取的数据并进行合并。例如,从GitHub API获取用户信息时,要获取星标仓库,需要先调用User,再使用 starred_url 端点进行进一步查询,这是一个典型的数据不足获取问题。GitHub在V3版本之前一直受此问题限制,直到引入GraphQL API V4才缓解了这个问题。
2. GraphQL基础
GraphQL采用全新的方法解决了上述问题,它将每个实体视为资源,并围绕其构建API,从而能够灵活地即时组合数据。
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



