前言:
此刻我们对“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 关联查询