Facebook|Facebook:如何在Golang中搭建GraphQL?
全文共9939字 , 预计学习时长25分钟
文章图片
文章图片
多年来 , 人们一直在使用REST API来满足开发需求 , 但得完成大量不必要的调用后 , 开发者才能灵活使用 。例如 , 如果Web和移动设备所需的数据不同 , 我们还须针对Web和移动设备创建两个不同的端点 。
因此 , Facebook创建了一种查询语言——GraphQL , 该语言可以准确地给出开发者查询的内容 , 干净利落 , 也让 API 更容易地随着时间推移而演进 , 还能用于构建强大的开发者工具 。
本文将重点介绍GraphQL的主要功能 , 以及就API而言它存在的优缺点 。文末将展示一个使用Golang的简单程序(已搭建GraphQL) 。
什么是GraphQL?
GraphQL是用于API的查询语言 , 它是服务器端运行时 , 通过为数据定义的类型系统执行查询 。
GraphQL是一种查询语言 , 适用许多领域 , 但通常用来在客户端和服务器应用程序之间搭桥 。无所谓使用的是哪个网络层 , 所以可以在客户端和服务器应用程序之间读取和写入数据 。(RobinWieruch《GraphQL指南》)
虽然GraphQL是查询语言 , 但它与数据库没有直接关系 , 也就是GraphQL不限于任意SQL或是NoSQL的数据库 。GraphQL位于客户端和服务器端 , 通过API连接/访问 。开发这种查询语言的目的之一是通过提供所需的数据来促进后端、前端或移动应用程序之间的数据通信 。
文章图片
文章图片
GraphQL的操作
查询(Query)
查询用于读取或获取值 。无论哪种情况 , 操作都是一个简单的字符串 , GraphQL服务器可以解析该字符串并以特定格式的数据进行响应 。
你可以使用查询操作从API请求数据 。查询描述需要从GraphQL服务器获取的数据 , 发送查询其实是按字段要求提取数据 。(Eve Porcello、Alex Banks著《学习GraphQL》)
文章图片
文章图片
模式(Schema)
GraphQL使用Schema描述数据图的形状 。这样的Schema定义类型的层次结构 , 依托的是从后端数据存储区填充的字段 , 也准确表示客户端可以对数据图执行哪些查询和突变 。
分解器(Resolver)
分解器是负责为Schema单一字段填充数据的功能 。它可以用你定义的任何方式填充该数据 , 例如从后端数据库或第三方API提取数据 。
突变(Mutation)
修改数据存储中的数据并返回一个值 , 它可用于插入、更新或删除数据 。
突变与查询原理相同:它具有字段和对象、参数和变量、片段和操作名称 , 以及返回结果的指令和嵌套对象 。(Robin Wieruch著《GraphQL之路》)
文章图片
文章图片
订阅(Subscription)
将数据从服务器推送到客户端的方法是选择侦听来自服务器的实时消息 。
GraphQL的订阅来自Facebook的真实用例 。开发团队希望找到一种方法 , 不刷新页面就能实时显示发文获得的有效点赞(Live Likes) 。(Eve Porcello、Alex Banks著《学习GraphQL》)
文章图片
文章图片
推荐阅读
- 穿鞋子的喵|如何在RTSP协议视频智能平台EasyNVR未登录的情况下调用通道直播的接口?
- FMARTS福玛仕办公家具|如何在网上挑选办公家具
- |B端运营,如何在渠道运营中获得主动权?
- 飞舞的鸢尾草|如何在Mac的Dock中添加AirDrop快捷方式如何将AirDrop添加到Mac的Dock
- 环球网|亮出全新智慧计算战略 新华三豪言要做“最强”的底气何在
- 识别|两元钱买到上千张人脸照片 人脸识别应用边界何在
- 农产品|补齐生态版图 五岁拼多多如何在新农村战略中“拼”出新天地?
- |教程 | 普通人如何在家运行以太坊2.0节点
- |如何在开关模式电源印刷电路板上放置电感
- Facebook|三星,苹果最好的损友!从3GS损到iPhone 12从不留情