19、GraphQL与Go语言结合:解决REST API数据获取问题

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,从而能够灵活地即时组合数据。

2.1 GraphQL架构组成
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值