什么是 GQL
GQL
即Graph Query Language
, 它是一种图形查询语言。GraphQL
是一个旨在简化前端和后端之间通信的规范。它主要由服务端的 schema 语言和客户端的查询语言组成。
GraphQL 是一种针对 Graph(图状数据)进行查询特别有优势的 Query Language(查询语言),所以叫做 GraphQL。它跟 SQL 的关系是共用 QL 后缀,就好像「汉语」和「英语」共用后缀一样,但他们本质上是不同的语言。GraphQL 跟用作存储的 NoSQL 没有必然联系,虽然 GraphQL 背后的实际存储可以选择 NoSQL 类型的数据库,但也可以用 SQL 类型的数据库,或者任意其它存储方式(例如文本文件、存内存里等等)。
详情可见 # GraphQL 中文官网 | 掘金翻译计划
简述
GraphQL主要是作用于数据接口,比如前端后端交互。是给客户端筛选自由获取服务端事先定义好的数据,提高了交互接口的灵活性。这些数据是从MySQL、NoSQL的库里面查出来,这就是关系吧。GraphQL本身不是数据库(知道这点就知道区别了),貌似也不具备聚合计算数据功能(这点我不确定),也不会直接操作数据库。
简单例子,后端使用了GraphQL之后,数据库查出来A,B,C,D四个字段,客户端需要数据的时候,你可以随意使用这四个字段的各种组合,只要A,C字段还是只要A,C,D字段等等,不再需要和服务端交流。
MySQL、NoSQL之类核心是为了储存数据,有储存自然有取出数据的查询。这是和GraphQL最主要功能区别。
简化后,GraphQL可以理解成一个灵活的ajax接口,mysql可以理解成一个储存数据的文件。最本质的区别。
外链参考:
- GraphQL Introduction
- GraphQL: A data query language
- 来自 InfoQ 的采访:Facebook开源数据查询语言GraphQL
- 来自官方的 Talks:GraphQL: Designing a Data Language
上手尝试
安装
代码语言:javascript复制npm install graphql
复制代码
由于gql
支持javascript
,使用node
运行即可
var { graphql, buildSchema } = require('graphql');
var schema = buildSchema(`
type Query {
hello: String
}
`);
var root = { hello: () => 'Hello world!' };
graphql(schema, '{ hello }', root).then((response) => {
console.log(response);
});