GraphQL全面深度讲解

目录

[一、GraphQL 是什么](#一、GraphQL 是什么)

[二、GraphQL 规范](#二、GraphQL 规范)

数据模型

字段

参数

三、运行示例

四、优势和劣势

优势

劣势


一、GraphQL 是什么

GraphQL 是一种用于 API 的查询语言,也是一个基于服务端的运行引擎。 GraphQL 提供了一套完整的规范和描述用于查询 API,服务端能够准确地返回给客户端需要的数据且没有任何冗余的数据。GraphQL 本质是 API 查询语言,用于前后端数据的查询;**开发者可以自定义数据模型、查询规范和查询参数,并在一个请求中就可以获取所有想要的数据。这不像 RESTful 请求,可能需要请求多次才可以获取需要的数据。**所以在 GraphQL 请求中,开发者对于返回的结果是有确定性的。

二、GraphQL 规范

数据模型

数据模型用于定义对象实体的数据结构以及对象之间的关系,比如对象有哪些属性,下图表示一个完整的数据模型,定义了一个查询 Query 和两个返回对象 Header 和 Query,这两个对象分别包含的属性字段和数据类型也分别定义了,这些就会用于实际的 GraphQL 的请求中。

字段

在 GraphQL 的查询中,服务端返回给客户端的请求结果包含了预期的结构,就是准确地返回每个请求的字段结果数据。服务端响应的字段和请求的字段是一致的,这个就是 GraphQL 最显著的一个特性,开发者是有预期的。如下图所示,按照上面定义的例子,请求了两个字段,返回了两个字段的结果。使用的参考工具是:APOLLO

参数

在查询数据的时候,可以传递参数进行查询,比如下图中 person 以 id 参数来查询相关的属性数据,在下方的变量中可以输入实际的 id 进行查询。

三、运行示例

示例一:根据数据模型输出完整的数据结果

四、优势和劣势

了解的 GraphQL 基本的一些概念和用法,简单分析一下使用 GraphQL 作为 API 查询语言的优劣势。

优势

  • GraphQL 只用一个数据源就可以查询所有数据,所有的请求都可以访问一个服务端点。
  • GraphQL 返回的结果响应准确地根据客户端的请求字段,减少客户端和服务端之间的干扰。
  • GraphQL 支持所有数据类型的定义和传输,包括请求中的参数传输。
  • GraphQL 现在拥有很多开源的工具平台以及插件和扩展。

劣势

  • 一些熟悉 RESTful 请求的开发者,可能需要花一段时间学习 GraphQL。
  • 对比 RESTful 接口开发,服务端开发者可能会需要花更多时间开发比较容易维护的数据模型。
相关推荐
李慕婉学姐2 小时前
Springboot旅游景点管理系统2fj40iq6(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
蓝眸少年CY2 小时前
(第八篇)spring cloud之zuul路由网关
后端·spring·spring cloud
long3162 小时前
弗洛伊德·沃肖算法 Floyd Warshall Algorithm
java·后端·算法·spring·springboot·图论
Loo国昌2 小时前
【LangChain1.0】第一篇:基础认知
后端·python·算法·语言模型·prompt
源代码•宸2 小时前
Golang原理剖析(channel面试与分析)
开发语言·经验分享·后端·面试·golang·select·channel
鹿角片ljp3 小时前
Java多线程编程:从基础到实战的完整指南
java·开发语言·后端
rannn_1113 小时前
【Javaweb学习|Day6】日志技术、多表查询、分页查询及优化(动态SQL)
java·后端·javaweb
qq_12498707534 小时前
基于微信小程序的宠物寄领养系统(源码+论文+部署+安装)
java·spring boot·后端·微信小程序·小程序·宠物·计算机毕业设计
那我掉的头发算什么4 小时前
【SpringBoot】从创建第一个spring项目开始
spring boot·后端·spring
源代码•宸4 小时前
Golang原理剖析(channel源码分析)
开发语言·后端·golang·select·channel·hchan·sudog