龙空技术网

Headless CMS 之 GraphQL白话入门

全景CMS作者 70

前言:

此刻我们对“graphql 关联查询”大约比较注重,我们都需要剖析一些“graphql 关联查询”的相关内容。那么小编也在网上收集了一些对于“graphql 关联查询””的相关文章,希望各位老铁们能喜欢,同学们一起来了解一下吧!

之前我们讲过Headless CMS,就是面向API的CMS系统,对于希望了解更多Headless CMS的朋友,可以先看之前的文章: 通过Headless CMS来构建内容中心 。

我们使用Drupal的时候,主要使用Rest API和JSON API,那么为什么多了一个GraphQL呢?

本文不做太多的技术讲解,希望无代码,三言两语能说清楚什么是GraphQL,做个入门。

GraphQL 见字如面

GraphQL,看名字,由两部分Graph+QL,QL就是query language,查询语言,Graph,就是图,表示关系。

从面向对象的角度来说,所有的数据其实都是实体,实体间互相引用,就是关联,这样就形成了一张网状图,这个就是Graph的含义。

那么,总结就是关联对象查询语言。(随意起名,用于理解)

对象和对象的关系

如果还是不太理解,我们举个简单的例子,数据库里面有存储学生的表,还有一个表存储的是班级信息,学生就属于一个班级,跟班级之间有关联。

GraphQL就是能处理这种查询的一种语言。

GraphQL跟SQL对比

其实GraphQL跟SQL基本一样,这样听起来就容易理解一些,关系查询语言。

不过一个是面向API使用的,一个是面向数据库使用的。

也就是说就是语法和使用环境不一样。

除此之外,几乎一样。

GraphQL跟Rest API

上面,我们了解了GraphQL其实一种语言,Rest API我们了解,其实是一种规范。

Rest定义了 HTTP请求 GET干啥,POST干啥,UPDATE干啥,DELETE干啥。

URL的格式应该是 /[resource]/id等URL大概长什么样,这样方便前端统一使用。

GraphQL说,好了,啥都不用定义,直接post过去我这个查询语句,结果就是你想要查询的结果。

那这样,GraphQL就只有一个api地址,一般就是/graphql, post过去一个查询语句,就能返回你想要查询的结果。

哪一个简单,你自己体会!

前后端设计

搞清楚了什么是GraphQL,也搞清楚了GraphQL怎么用,那么我们前后端怎么设计。

后端,不管什么语言,目前都有开源的GraphQL包,引用过来,然后做一些custom的开发,就可以用,不用直接从头搞。

前端,这个其实就是POST请求,返回JSON而已,所以,所有框架都支持,不需要特殊的开发,并且更加简单友好。

两行代码下肚

最后,我们写两行代码,以示对软件的敬畏之心。

比如, 我们要查询一个用户,年龄15岁,性别女,这个请求该怎么构造,示例代码如下:

POST:

{  user (age: "15", gender: "female") { //查询条件    //要返回的字段    name    address  }}
{  "data": {    "user": {      "name": "caroline",      "address": "USA"    }  }}

当然,GraphQL支持嵌套,关联等多重查询,因此,才能称作查询语言(QL),所以整体功能还是很强大。

最后,GraphQL有时候也不一定是最好的,比如查询多重会导致效率低下,或者要重构代码之类,总之我们要有挑选方案的判断力,不要陷入专业陷阱,实用的才是最好的。

===================

大家好,我是Robbin,来给大家讲CMS。

如何使用,开源Drupal + 可视化工具GrapeJS (构建)=> 可视化、模块化、低代码的、易上手的CMS平台。

可以快速构建网站、手机站、产品站、在线教育、课程售卖、售后咨询等平台的工具。

==================

标签: #graphql 关联查询