所在的位置: html >> html前景 >> GraphQL基础教程

GraphQL基础教程

GraphQL是一种查询语言和执行引擎,通过API描述应用程序数据模型的功能和需求。年由Facebook提出并实现,最初用在移动端,在年对外发布。于年成立GraphQL基金会发展至今。

简介

GraphQL可以类比SQL(StructuredQueryLanguage),都是一种查询语言,通过查询语句可以获得期望结果。不同之处有两点:

SQL是基于结构化的数据模型,而GraphQL基于图。

SQL是从数据库查询,而GraphQL从服务器查询。

为什么GraphQL基于图?

因为大多数应用程序数据模型基于图。以博客系统为例,一个作者可以撰写多篇博客,同一个博客也可以由多个作者共同完成,如果两个作者写过同一篇博客,那么他们互为合作者。博客和作者是实体,属于图的节点。作者和博客之间(多对多)的关系,属于图的边。特别的,实体和他们属性之间的关系也属于边,属性内容为叶子节点。如下图所示:

很明显这是一个双向循环图,GraphQL就是基于这种典型的图模型,来构建和查询数据。

核心概念

GraphQL构建在API之上,通过API在客户端——服务器端交换数据,它使用一个模式定义语言(TheSchemaDefineLanguage)来描述对数据的增删查改。

模式定义语言TheSchemaDefineLanguage(SDL)

GraphQL是如何来描述应用程序数据模型的呢?它使用类型系统来描述实体,使用类型之间的关系来描述实体之间的关系。比如文章开始的博客系统,对应Schema如下:

typeBlog{id:IDtitle:Stringurl:Stringauthors:[Author]}typeAuthor{id:IDname:Stringcoauthors:[Author]blogs:[Blog]}

定义了两个类Blog和Author来描述博客和作者这两个实体,用属性相互引用来表示博客和作者之间多对多的关系。

查询数据

简单博客应用程序的数据模型是一张图,一张双向循环图。对于复杂的大型应用程序,它的数据模型可能包含成百上千个节点和边,一次查到整张图显然是不合适的。GraphQL需要确定两件事:

查询的入口

如何遍历图以获取数据

它通过定义Query来实现。Query的不同方法(Resolver)确定了查询的入口和遍历的方法。如果你想查询系统中所有博客,你可以:

直接找到博客节点查询,例如:

对应的查询语句如下:

query{blogs{titleurl}}

查询结果为:

{"data":{"blogs":[{"title":"GraphQL","url":"


转载请注明:http://www.aierlanlan.com/cyrz/5819.html

  • 上一篇文章:
  •   
  • 下一篇文章: