一 概述
GraphQL是由Facebook创造的用于描述复杂数据模型的一种查询语言。该查询语言是指一种前后端数据查询方式的规范。
二 RESTful存在的问题
RESTful是一种请求数据资源的一种api规范:
#请求
GET http://localhost/user/100
#响应:
{
id : 100,
name : "小三",
age : 20,
address : "北京市",
}
RESTful请求出现这样的结果是正确的,如果,对于请求我只是想得到id和name属性,其他的属性是非必须的,如果我们仍然是获取全部属性,这时候在实际请求中对带宽资源有所浪费。
同时如果我们要获取数据资源时:
#查询用户信息
GET http://localhost/user/100
#响应:
{
id : 100,
name : "小三",
age : 20,
address : "北京市",
}
#查询用户的身份证信息
GET http://localhost/card/100
#响应:
{
id : 100,
name : "小三",
cardNumber : "999999999999999",
address : "北京市",
}
如结果所示,我们需要执行两次不同的api请求才能够完成,这样对于前端接口的使用会不是很友好,当有多个类似的数据请求时,就要发送多个请求才能够完成。
三 GraphQL
GraphQL很好的解决了RESTful在使用过程中的不足,特点如下:
- 按需获取数据,即不会一次返回完整的属性,只返回必须属性。
- 一个查询获取多个数据,即一个请求获取多个资源。
- API的演变无需划分版本(官网的动画演示)。