GraphQL
什么是GraphQL
Facebook开源的一个数据查询语言
1、GraphQL是一门语言,有自己的语法,这点和其他编程语言是类似的
2、GraphQL是一个runtime,可以认为它是一个运行在服务器上的可以理解和响应使用GraphQL语言的请求应用程序,类似一个服务端的GraphQL翻译
GraphQL的意义
RESTful Api的弊端随着应用的扩展,被逐渐放大,比如接口调用次数增多,耗时太长。每个接口做单独的开发却又古老而不合时宜。所以GraphQL的出现是为了更好的降低数据之间的网状关系带来的开发复杂度。
如何使用
一个简单的GraphQL的语法案例如下,就是一个输入格式如下(不是JSON)
{
user(id: 42) {
firstName
lastName
email
}
}
会被转换成如下输出
{
"data": {
"user": {
"firstName": "John",
"lastName": "Doe",
"email": "john@example.com"
}
}
}
这可以看做是一次请求响应的过程
一个查询定义如下
const queryType = new GraphQLObjectType({
name: 'RootQuery',
fields: {
hello: {
type: GraphQLString,
resolve: () => 'world'
}
}
});
const mySchema = new GraphQLSchema({
query: queryType
});
const inputQuery = `{ hello }`
graphql(mySchema, inputQuery).then(result => {
console.log('Server Answer :', result.data);
});
打印log如下
Server Answer : { hello: 'world' }
GraphQL内置一些基础数据类型,然后可以自定义复杂数据类型,数据类型之间可以互相嵌套和引用,这就可以组成可配置的数据结构
GraphQL是一门强类型的语言,每个字段都必须要要有严格的格式约束
这门语言有很多种编程语言的实现,graphql.js就是其中一种
对于前端而言,最简单的使用过程就是拼接上文的hello这样子的Query,来查询数据
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。