Facebook 如何在Golang中搭建GraphQL

  • 电脑网络维修
  • 2024-11-14

多年来,人们不时在经常使用RESTAPI来满足开发需求,但得成功少量不用要的调用后,开发者能力灵敏经常使用。例如,假设Web和移动设施所需的数据不同,咱们还须针对Web和移动设施创立两个不同的端点。

因此,Facebook创立了一种查问言语——GraphQL,该言语可以准确地给出开发者查问的内容,洁净拖拉,也让 API更容易地随着期间推移而演进,还能用于构建弱小的开发者工具。

本文将重点引见GraphQL的关键性能,以及就API而言它存在的优缺陷。文末将展现一个经常使用Golang的便捷程序(已搭建GraphQL)。

什么是GraphQL?

GraphQL是用于API的查问言语,它是主机端运转时,经过为数据定义的类型系统口头查问。

GraphQL是一种查问言语,适用许多畛域,但通罕用来在客户端和主机运行程序之间搭桥。次要经常使用的是哪个网络层,所以可以在客户端和主机运行程序之间读取和写入数据。(RobinWieruch《GraphQL指南》)

只管GraphQL是查问言语,但它与数据库没有间接相关,也就是GraphQL不限于恣意SQL或是NoSQL的数据库。GraphQL位于客户端和主机端,经过API衔接/访问。开发这种查问言语的目的之一是经过提供所需的数据来促成后端、前端或移动运行程序之间的数据通讯。

GraphQL的操作

1. 查问(Query)

查问用于读取或失掉值。无论哪种状况,操作都是一个便捷的字符串,GraphQL主机可以解析该字符串并以特定格局的数据启动照应。

你可以经常使用查问操作从API恳求数据。查问形容须要从GraphQL主机失掉的数据,发送查问其实是按字段要求提取数据。(Eve Porcello、AlexBanks著《学习GraphQL》)

2. 形式(Schema)

GraphQL经常使用Schema形容数据图的状态。这样的Schema定义类型的档次结构,附丽的是从后端数据存储区填充的字段,也准确示意客户端可以对数据图口头哪些查问和突变。

3. 合成器(Resolver)

合成器是担任为Schema繁多字段填充数据的性能。它可以用你定义的任何形式填充该数据,例如从后端数据库或第三方API提取数据。

4. 突变(Mutation)

修负数据存储中的数据并前往一个值,它可用于拔出、降级或删除数据。

突变与查问原理相反:它具备字段和对象、参数和变量、片段和操作称号,以及前往结果的指令和嵌套对象。(RobinWieruch著《GraphQL之路》)

5. 订阅(Subscription)

将数据从主机推送到客户端的方法是选用侦听来自主机的实时信息。

GraphQL的订阅来自Facebook的实在用例。开发团队宿愿找到一种方法,不刷新页面就能实时显示发文取得的有效点赞(Live Likes)。(EvePorcello、Alex Banks著《学习GraphQL》)

GraphQL的好处与劣势

1. 好处

(1) 开发迅速

来看一个案例:如何失掉图书借阅者的数据。在视图中,首先我要显示书籍列表,书籍列表菜单显示中出现一个借阅者的列表。在RESTAPI中,须要创立新的端点以前往图书清单,再创立一个新的端点以前往每本书的借阅人。

与REST API不同,GraphQL中仅经常使用一个端点就可以前往书籍列表和借阅者列表了。

经常使用以下示例GraphQL查问:

(2) 灵敏性

来看一个案例:如何失掉书籍具体信息。在网络视图上,我想展现书籍具体信息,例如称号、多少钱和引见。在RESTAPI中须要创立一个新的端点以前往称号、多少钱、引见等的书籍具体信息。

假设在移动端检查时,只想展现图书具体信息中的称号和多少钱怎样办?假设经常使用与Web视图相反的端点,则会糜费引见的数据。所以须要更改该端点外部的现有逻辑,或创立一个新的端点。

与REST API不同,GraphQL中仅经常使用一个端点即可依照Web或移动设施的需求前往书籍具体信息。在GraphQL中,只有更改查问。

(3) 保养便捷,易于经常使用

2. 缺陷

代码成功

成功环节经常使用了Golang编程言语,这里是名目架构:

在依赖版本和依赖治感性能上经常使用的是go模块。用graphql-go来支持查问、突变和订阅;用graphql-go-handler来支持处置器。此时,我将创立一个便捷的程序,这里经常使用GraphQL为具体书目创立CRUD。步骤如下:

先新建一个环境文件夹,而后新建一个名为connection.yml的文件:

而后创立一个架构文件夹,创立名为databaseConfiguration.go、environmentConfiguration.go和model.go的文件。这个文件夹用来性能数据库并从connection.yml读取数据。

(1)>

  • 关注微信

本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载联系作者并注明出处:https://duobeib.com/diannaowangluoweixiu/5057.html

猜你喜欢

热门标签

洗手盆如何疏浚梗塞 洗手盆为何梗塞 iPhone提价霸占4G市场等于原价8折 明码箱怎样设置明码锁 苏泊尔电饭锅保修多久 长城画龙G8253YN彩电输入指令画面变暗疑问检修 彩星彩电解除童锁方法大全 三星笔记本培修点上海 液晶显示器花屏培修视频 燃气热水器不热水要素 热水器不上班经常出现3种处置方法 无氟空调跟有氟空调有什么区别 norltz燃气热水器售后电话 大连站和大连北站哪个离周水子机场近 热水器显示屏亮显示温度不加热 铁猫牌保险箱高效开锁技巧 科技助力安保无忧 创维8R80 汽修 a1265和c3182是什么管 为什么电热水器不能即热 标致空调为什么不冷 神舟培修笔记本培修 dell1420内存更新 青岛自来水公司培修热线电话 包头美的洗衣机全国各市售后服务预定热线号码2024年修缮点降级 创维42k08rd更新 空调为什么运转异响 热水器为何会漏水 该如何处置 什么是可以自己处置的 重庆华帝售后电话 波轮洗衣机荡涤价格 鼎新热水器 留意了!不是水平疑问! 马桶产生了这5个现象 方便 极速 邢台空调移机电话上门服务 扬子空调缺点代码e4是什么疑问 宏基4736zG可以装置W11吗 奥克斯空调培修官方 为什么突然空调滴水很多 乐视s40air刷机包 未联络视的提高方向 官网培修 格力空调售后电话 皇明太阳能电话 看尚X55液晶电视进入工厂形式和软件更新方法 燃气热水器缺点代码

热门资讯

关注我们

微信公众号