GraphQL 分享 理论篇
前阵子在公司内部分享了GraphQL,今天抽空总结并补充一下:
目前项目开发比较流行的是前台后分离模式,后台提供接口,前台调用接口,接口书写遵循流行的RESTful API规范
- REST 由 Roy Thomas Fielding 在他2000年的博士论文中提出的。
- REST,即 Representational State Transfer(表述性状态传递) 的缩写。
- 如果一个架构符合 REST 原则, 就称它为 RESTful 架构
RESTful API 特点
- 每一个 URI 代表一种资源;
- 充分利用 HTTP 协议本身语义;
- 客户端和服务器器之间,传递这种资源的某种表现层;
- 客户端通过四个 HTTP 动词,对服务器器端资源进行操作,实现 " 表现层状态转化 " 。
RESTful API 缺陷
- 一个接口仅操作单一资源
- 各个资源是独立的,完成一个页面需要调用多个接口
- 数据冗余,灵活性差
- 需专门维护文档 (v1, v2)
有时候打开某个页面,我们需要调用多个接口。
有时候我们不需要的字段后台也给我们返回了,这是由后台控制的。
而GraphQL可以完美的解决上面的问题
GraphQL是….
- Facebook 2012年开发,2015年开源
- 应用层的API查询语言
- 在服务端的运行数据查询语言的规范 (我建议你先抽半个小时浏览下心里有个大概)
GraphQL的特点
- 强类型
- 单一入口
- 一个请求获取所有所需资源
- 内省系统
为什么叫GraphQL
图(Graph)是一种复杂的非线性结构,在图结构中,每个元素都可以有零个或多个前驱,也可以有零个或多个后继,也就是说,元素之间的关系是任意的。
使用GraphQL 注意的问题
- 性能问题 (请求少了,但查询多了)
- GraphQL 在前端如何与视图层、状态管理方案结合
- 安全, Limit, timeout N+1 查询
关于从规范里提炼的
- GraphQL是一种数据描述语言,而非编程语言,因此GraphQL缺乏用于描述数学表达式的标点符号。
- 注释只能用 # ,可以使用末尾的逗号提高可读性。
- GraphQL的命名是大小写敏感的,也就是说name,Name,和NAME是不同的名字。
- 一个文档可以包含多个操作和片段的定义。一个查询文档只有包含操作时,服务器才能执行。
- 如果一个文档只有一个操作,那这个操作可以不带命名或者简写,省略掉query关键字和操作名。
下一篇 实战
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Learning Scrapy 第二版
下载链接:https://share.weiyun.com/5LZAI1S 《Learning Scrapy》的第二版马上就要正式出版了(2018年6月11日;本书跳票了),Packt已经在网站上提供了下载链接(需付费),但可惜是个先早版,只有前四章。 粗略看了下,书的副标题变了,但前三章的内容变化不大。第四章的案例变成了抓取CNN和BBC,取代了原来无聊的app数据案例。 第二版是对应Scrapy的1.4版本的(但是刚刚看了下Scrapy官网,Scrapy现在已经是1.5版了),重点的变化应该是在后面关于Scrapy架构和功能的(比如加入了Selenium),需要等正式版再看、再更新。
- 下一篇
为什么使用中间件下载时总是收到警告消息Object is in status Wait
在使用中间件从ERP下载对象时,正常情况下应该看到如下提示消息: 然而有时遇到的是黄色的警告消息:Object is in status Wait. 如何自己排错呢?在函数SMOF0_INIT_DNL_START里设置断点。 使用SMOF0_READ_SMOFPARSFA查询系统参数MAX_PARALLEL_PROCESSES,在我使用的系统上配置为5,意味着最大只允许有5个工作进程用于中间件下载。 下列代码107到115行负责计算还剩余多少可用的工作进程用于中间件下载。计算结果存储于第115行的变量gv_open_processes. 在我上述的例子里,可用工作进程的数目gv_open_processes为5 - 5 = 0, 因此抛出文章题目的警告消息。 解决方案:要么停掉长时间处于running状态的其他下载任务以释放出占用的工作进程。 要么在表SMOFPARSFA里为参数MAX_PARALLEL_PROCESSES配置更大的数值。 要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Hadoop3单机部署,实现最简伪集群
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19