GraphQL 入门
简介
GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
使用JavaScript 构建项目
基于 Express webserver 服务器的一个 GraphQL API 服务端参考实现,你可以用它结合常规 Express webserver 来运行 GraphQL,也可以作为独立 GraphQL 服务器。
1 | npm install express express-graphql graphql |
然后使用 node server.js 以运行 server.js 中的代码:
1 | var express = require('express'); |
Query查询
type Query 必须存在, Query为查询的数据
1 | // User 是自定义的一个数据类型 |
Mutation变更
GraphQL 建立了一个规范,任何修改数据的操作都应该使用 mutation 来发送。
input 表示输入对象,看上去和普通对象一摸一样,除了关键字是 input 而不是 type。它的特别之处在于,输入对象可以用在复杂的参数中,经常是 mutation 的参数,比如下面 createUser 的参数。
1 | input UserInput { |
root
对query 和 mutation 的逻辑操作
1 | // 充当数据库 |
前端
前端调用方法 与restful API 一样
不过是body内的传参变成了固定的几个参数
- query: 查询语句
- variables: 传入参数,若为空可以不传
1 | let variables = null |
总结
restful据url查询所有的字段结构都是固定好的当需要改变字段时只能改接口或是重写接口,会造成资源重复调用的问题
grapql按需查询(写法上增加的代码重复性,增加了前端的代码量),需要什么拿什么 只有一个接口
grapql不包含任何SQL语句,数据库处理,它只是将数据拿到之后进行一下过滤,再返回给前端
下面是RESTFul与GraphQL 大概的比较
RESTFul | GraphQL | |
---|---|---|
优点 | 接入简单 | 查询方便,按需查询 |
缺点 | 接口管理问题 | 会增加架构复杂度 |
参考
官方地址:https://graphql.com/
中文地址:https://graphql.cn/
- 标题: GraphQL 入门
- 作者: 灯火
- 创建于 : 2021-05-21 01:12:17
- 更新于 : 2023-07-25 13:11:58
- 链接: https://blog.juniverse.top/2021/05/21/GraphQL/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论