GraphQL 分享 理论篇

简介: 前阵子在公司内部分享了GraphQL,今天抽空总结并补充一下:目前项目开发比较流行的是前台后分离模式,后台提供接口,前台调用接口,接口书写遵循流行的RESTful API规范REST 由 Roy Thomas Fielding 在他2000年的博士论文中提出的。

前阵子在公司内部分享了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关键字和操作名。

下一篇 实战

参考:
http://graphql.org/graphql-js/

相关文章
|
8月前
|
前端开发 数据管理 API
探究GraphQL在前端开发中的实际应用
在如今越来越复杂的前端应用程序中,数据管理变得更加困难,因此GraphQL成为了越来越受欢迎的解决方案。本文将介绍GraphQL在前端开发中的应用,以及它对开发过程所带来的好处。
|
5月前
|
API 开发者
GraphQL全面深度讲解
GraphQL是一种查询语言和运行引擎,允许开发者在一个请求中自定义并获取所有所需数据,提供准确且无冗余的数据返回,但可能需要开发者学习新的语言并投入更多时间来维护数据模型。
131 5
GraphQL全面深度讲解
|
3月前
|
前端开发 API 网络架构
深入浅出:GraphQL 的优势与使用场景
【10月更文挑战第6天】深入浅出:GraphQL 的优势与使用场景
301 0
|
2月前
|
缓存 前端开发 API
深入浅出:后端开发中的RESTful API设计原则
【10月更文挑战第43天】在数字化浪潮中,后端开发如同搭建梦想的脚手架,而RESTful API则是连接梦想与现实的桥梁。本文将带你领略API设计的哲学之美,探索如何通过简洁明了的设计,提升开发效率与用户体验。从资源定位到接口约束,从状态转换到性能优化,我们将一步步构建高效、易用、可维护的后端服务。无论你是初涉后端的新手,还是寻求进阶的开发者,这篇文章都将为你的开发之路提供指引。让我们一起走进RESTful API的世界,解锁后端开发的新篇章。
|
8月前
|
API 开发者 网络架构
从REST到GraphQL:探究GraphQL的概念与实践
RESTful API曾经是互联网应用程序的主流,但它也存在着一些限制。随着GraphQL的出现,开发者们可以更加自由地定义和查询API,提高了应用程序的灵活性和可扩展性。本文将深入探讨GraphQL的概念和实践,并介绍如何在应用程序中使用GraphQL。
49 6
|
8月前
|
存储 API 开发者
探究GraphQL:从概念到实践
GraphQL是一种用于API开发的查询语言,它具有灵活的数据获取能力和强大的类型系统。与传统RESTful API相比,GraphQL更加高效、可扩展和易于维护。本文将介绍GraphQL的基本概念、核心优势以及实践应用。
|
8月前
|
前端开发 API UED
深入浅出GraphQL:理解与实践
本文将以清晰易懂的方式介绍GraphQL的概念及其实际应用。通过对比RESTful API和GraphQL的特点,阐述GraphQL在数据查询和交互方面的优势。同时,将探讨GraphQL在现代软件开发中的实际应用,并提供一些最佳实践指南。无论您是初学者还是有经验的开发者,都能从本文中获得有益的启发和指导。
|
存储 Java API
大厂都在实践的GraphQL,你了解吗?
大厂都在实践的GraphQL,你了解吗?
194 0
GraphQL 是干什么的?底层原理是什么?
GraphQL 是干什么的?底层原理是什么?
424 0
|
JSON 前端开发 NoSQL
GraphQL 从入门到实践
本文首先介绍了 GraphQL,再通过 MongoDB + graphql + graph-pack 的组合实战应用 GraphQL,详细阐述如何使用 GraphQL 来进行增删改查和数据订阅推送,并附有使用示例,边用边学印象深刻~ 如果希望将 GraphQL 应用到前后端分离的生产环境,请期待后续文章。 本文实例代码:Github 感兴趣的同学可以加文末的微信群,一起讨论吧~
GraphQL 从入门到实践