前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GraphQL学习第一篇 -GraphQL简介

GraphQL学习第一篇 -GraphQL简介

作者头像
越陌度阡
发布2020-11-26 14:46:43
5120
发布2020-11-26 14:46:43
举报

1. GraphQl 介绍

GraphQL 是一种新的 API 的查询语言,它提供了一种更高效、强大和灵活 API 查询。它 是由 Facebook 开发和开源,目前由来自世界各地的大公司和个人维护。GraphQL 对API 中的数据提供了一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余。它弥补了 RESTful API(字段冗余,扩展性差、无法聚合 API、无法定义数据 类型、网络请求次数多)等不足。

注意:GraphQL 是 API 的查询语言,而不是数据库。从这个意义上说,它是数据库无关的, 而且可以在使用 API 的任何环境中有效使用,我们可以理解为 GraphQL 是基于 API 之上的一 层封装,目的是为了更好,更灵活的适用于业务的需求变化。

2. 为什么推荐 GraphQL 而不是 RESTful API

在过去的十多年中,REST 已经成为设计 Web API的标准(虽然只是一个模糊的标准)。 它提供了一些很棒的想法,比如无状态服务器和结构化的资源访问。然而 REST API 表 现得过于僵化,无法跟上访问它们的客户的快速变化的需求。

1. RESTful API 不足

(1). 扩展性(多个终端需要返回不同的字段),单个 RESTful 接口返回数据越来越臃肿。前端对于真正用到的字段是没有直观映像的,仅仅通过 URL 地址,无法预测也无法回忆返回的字段数目和字段是否有效,接口返回 50 个字段,但却只用 5 个字段,造成字段冗余,扩展性差,单个 RESTful 接口返回数据越来越臃肿。

(2). API 聚合问题,某个前端展现,实际需要调用多个独立的 RESTful API 才能获取到足够的数据,导致网络请求次数多。

(3). 前后端字段频繁改动,导致类型不一致,错误的数据类型可能会导致网站出错,尤其是在业务多变的场景中,很难在保证工程质量的同时快速满足业务需求

2. GraphQL 的优点

(1). 吸收了 RESTful API 的特性。

(2). 所见即所得,各种不同的前端框架和平台可以指定自己需要的字段,查询的返回结果就是输 入的查询结构的精确映射。

(3). 客户端可以自定义 API 聚合。

如果设计的数据结构是从属的,直接就能在查询语句中指定,即使数据结构是独 立的,也可以在查询语句中指定上下文,只需要一次网络请求,就能获得资源和子资源的数据。

(4). 代码即是文档。

GraphQL 会把 schema 定义和相关的注释生成可视化的文档,从而使得代码的变更,直接就反映到最新的文档上,避免 RESTful 中手工维护可能会造成代码、 文档不一致的问题。

(5). 参数类型强校验。

RESTful 方案本身没有对参数的类型做规定,往往都需要自行实现参数的校验机制,以确保安全。但 GraphQL 提供了强类型的 schema 机制,从而天然确保了参数类型的合法性。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. GraphQl 介绍
  • 2. 为什么推荐 GraphQL 而不是 RESTful API
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档