GraphQL 初探

271 阅读2分钟

GraphQL: graph query language

GraphQL是什么

一种api查询语言。实现数据查询的运行时。 我们看下以下场景: 如果用rest我们将做如下修改:

1-1
前端:
getBooksDetail?id=88&getTile=1&getAthor=1
后端
books = selectbyid(ctx.quest.id)
return books

1.操作数据库,2.重新拼装接口

如果用 graphql 呢?我们将做如下修改:

1-2
{
  books {
    title
  }
}

而使用graphql,会根据客户端的请求参数query来返回数据,后端不需要重新写api接口,查询语句等

那么这个带来的是什么呢? 灵活性:每次需要改变获取的数据时,直接改变查询参数query即可,不需要再拼接数据。这个灵活性会带来以下好处:

1.减少api拼接:库表接口固定,需要零散数据时,需要用多次操作sql,经过非常复杂的数据拼装,才能进行数据返回。每次数据的改动需要重新修改sql语句、复杂的api拼装才能返回数据。

2.单次查询:修改返回数据时,使用rest方案,有2中解决方式,一种是修改复杂的api拼装。另一种则是增加接口,让数据获取方使用旧+新接口获取最终数据。以查询单个电影名称为例子,需要先得到一个filmlist,根据每个film的id,获取title,得到最终数据。加上我们是n部电影,客户端则需要发送n+1个请求。而采用graph,只需要修改query中的类型定义,直接用图论的方式,操作数据库,与REST API v3相比,精确定义所需数据和只定义所需数据的能力是一个强大的优势,避免拼接数据、避免多次请求等问题。

框架

apollographqlcn.github.io/react-docs-…

未完待续