首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

超越 REST

API 使用者的人机工程学(与同类中最好 Swagger UI 相比) GraphQL 强类型系统多语言客户端支持,意味着 API 提供者无需关心特定于语言 API 客户端生成、版本控制维护...1Graphile 在早期 GraphQL 探索过程中,Netflix 工程师意识到 Graphile 库可以将 PostgreSQL 数据库对象(、视图函数)作为 GraphQL API 来呈现...具体来说: 使用数据库视图作为“API 层”来保持灵活性,以允许在不变更现有 GraphQL 模式(构建在数据库视图上)情况下修改。...world 2 这两个子字段)在生成 GraphQL 模式中是不透明。...一旦 UI 后端之间“公共 API”(“public API”)固化,我们就“加固”了 GraphQL 模式,通过使用智能注解 @omit 标记视图来删除所有不必要查询(由 Graphile

2.9K20

GraphQL+Koa2实现服务端API结合Apollo+Vue

它弥补了 RESTful API字段冗余,扩展性差、无法聚合 api、无法定义数据 类型、网络请求次数多)等不足 注意:GraphQLapi 查询语言,而不是数据库。...比如:字段冗余,扩展性差、无法聚合 api、无法 定义数据类型、网络请求次数多 GraphQL 出现整好弥补了 RESTful APi 不足 使用 GraphQL 公司 目前已经有很多公司在使用...然而 REST api 现得过于僵化,无法跟上访问它们客户快速变化需求 RESTful API 不足 扩展性(多个终端需要返回不同字段),单个 RESTful 接口返回数据越来越 臃肿。...前端对于真正用到字段是没有直观映像,仅仅通过 url 地址,无法预测也无 法回忆返回字段数目字段是否有效,接口返回 50 个字段,但却只用 5 个字段,造 成字段冗余,扩展性差,单个 RESTful...实现导航列表API、文章分类API、文章列表API、文章详情API 、文章列表分页查询API、以及文章列表关联文章分类实现聚合API 4.1 app完善配置 // app.js  var Koa=require

5.1K42
您找到你想要的搜索结果了吗?
是的
没有找到

GraphQL 入门指南

开发人员是大多数据使用你 API 来构建某些内容或仅使用数据。所以你 API 应该尽可能简洁直观, 好 API 是非常容易使用学习。直观,在开始设计 API 时常要记住一点。...它为我们提供了同一个端,对于同一个 API,没有版本2或版本3。给 GraphQL API 添加字段类型而无需影响现有查询,老旧字段可以废弃,从工具中隐藏。...例如,如果你正在构建一个社交媒体应用程序,那么你 API 应该具有诸如文章、用户、赞、组等类型。 类型具有字段,这些字段返回特定类型数据。...类型字段可以是任何类型,并始终返回一种数据类型,如 Int,Float,String,Boolean,ID,对象类型列表或自定义对象类型。...用户也会有一个 name email,所以给它一个字符串类型一个 Int 类型。 但是,在每一行结尾 !呢? 感叹号表示字段不可为空,这意味着每个字段必须在每个查询中返回一些数据。

1.9K30

新一代数据查询语言GraphQL来啦!

而本地移动应用,为了给应用提供需要数据,填充数据模型,显示视图,要解决问题是怎么去请求,准备,传递这些数据。 Facebook考量了两种实现方案,包括RESTful服务资源FQL。...由{}包裹对象 对象由属性列表组成 ()包裹查询条件 // 获取用户信息同时获取该位用户朋友信息列表,包括姓名、性别地址信息 { user (id: 1001){ // 第一层 name...3.4 协议而非存储 GraphQL并不直接提供后端存储能力,它不绑定任何数据库或者存储引擎,它可以利用你已有的代码技术来进行数据源管理。当然这对改造现有的业务会带来相应成本。...3.5 自检性 一个GraphQL服务可以直接查询出它所支持类型,也就是说你不需要花时间写API文档,也不需要花时间理解APIGraphQL直接帮助开发者快速学习探索API。...当你添加新产品功能时,额外字段可以被添加到服务中,同时并不会影响到现有的业务;当你淘汰老功能时候,遗弃对应服务字段依旧可以继续工作。这种渐进式、向后兼容过程去除了递增版本号需要。

2.9K70

新一代数据查询语言GraphQL来啦!

而本地移动应用,为了给应用提供需要数据,填充数据模型,显示视图,要解决问题是怎么去请求,准备,传递这些数据。 Facebook考量了两种实现方案,包括RESTful服务资源FQL。...由{}包裹对象 对象由属性列表组成 ()包裹查询条件 // 获取用户信息同时获取该位用户朋友信息列表,包括姓名、性别地址信息 { user (id: 1001){ // 第一层 name...3.4 协议而非存储 GraphQL并不直接提供后端存储能力,它不绑定任何数据库或者存储引擎,它可以利用你已有的代码技术来进行数据源管理。当然这对改造现有的业务会带来相应成本。...3.5 自检性 一个GraphQL服务可以直接查询出它所支持类型,也就是说你不需要花时间写API文档,也不需要花时间理解APIGraphQL直接帮助开发者快速学习探索API。...当你添加新产品功能时,额外字段可以被添加到服务中,同时并不会影响到现有的业务;当你淘汰老功能时候,遗弃对应服务字段依旧可以继续工作。这种渐进式、向后兼容过程去除了递增版本号需要。

88230

GraphQL详解

另外一种做法就是告知后端,要么开发新接口,要么,修改旧接口,删掉冗余字段。 但一般来说,开发新接口往往是后端开发人员会选择方案,因为这个方案对现有系统影响最低,不会有额外风险。...创建GraphQL服务器最终目标是: 允许查询通过图节点形式去获取数据。 是什么让我放弃了restful api?...类型修饰符就是用来修饰类型,以达到额外数据类型要求控制。 比如: 列表:Type 非空:Type! 列表非空:Type! 非空列表列表内容类型非空:Type!!...集成现有服务GraphQL层 直连数据库集成服务混合模式:前两种方式混合。 混合接入方式 可以说是非常灵活了!你都不用担心会给你带来任何麻烦。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据、定义权限并使用 GraphQL 接口查询操作。

2.5K00

我为什么要放弃RESTful,选择拥抱GraphQL

另外一种做法就是告知后端,要么开发新接口,要么,修改旧接口,删掉冗余字段。 但一般来说,开发新接口往往是后端开发人员会选择方案,因为这个方案对现有系统影响最低,不会有额外风险。...,为下一步查询返回做准备; 前端使用模式查询语言(Schema)来描述需要请求数据对象类型具体需要字段(称之为声明式数据获取); 后端GraphQL通过前端传过来请求,根据需要,自动组装数据字段...类型修饰符就是用来修饰类型,以达到额外数据类型要求控制。 比如: 列表:[Type] 非空:Type! 列表非空:[Type]! 非空列表列表内容类型非空:[Type!]!...集成现有服务GraphQL层 直连数据库集成服务混合模式:前两种方式混合。 混合接入方式 可以说是非常灵活了!你都不用担心会给你带来任何麻烦。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据、定义权限并使用 GraphQL 接口查询操作。

2.3K40

GraphQL

另外一种做法就是告知后端,要么开发新接口,要么,修改旧接口,删掉冗余字段。 但一般来说,开发新接口往往是后端开发人员会选择方案,因为这个方案对现有系统影响最低,不会有额外风险。...,为下一步查询返回做准备; 前端使用模式查询语言(Schema)来描述需要请求数据对象类型具体需要字段(称之为声明式数据获取); 后端GraphQL通过前端传过来请求,根据需要,自动组装数据字段...类型修饰符就是用来修饰类型,以达到额外数据类型要求控制。 比如: 列表:Type 非空:Type! 列表非空:Type! 非空列表列表内容类型非空:Type!!...集成现有服务GraphQL层 直连数据库集成服务混合模式:前两种方式混合。 混合接入方式 可以说是非常灵活了!你都不用担心会给你带来任何麻烦。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据、定义权限并使用 GraphQL 接口查询操作。

2.6K65

为什么我劝你放弃了Restful API

另外一种做法就是告知后端,要么开发新接口,要么,修改旧接口,删掉冗余字段。 但一般来说,开发新接口往往是后端开发人员会选择方案,因为这个方案对现有系统影响最低,不会有额外风险。...前端使用模式查询语言(Schema)来描述需要请求数据对象类型具体需要字段(称之为声明式数据获取); 后端GraphQL通过前端传过来请求,根据需要,自动组装数据字段,返回给前端。...类型修饰符就是用来修饰类型,以达到额外数据类型要求控制。 比如: 列表:[Type] 非空:Type! 列表非空:[Type]! 非空列表列表内容类型非空:[Type!]!...集成现有服务GraphQL层 直连数据库集成服务混合模式:前两种方式混合。 混合接入方式 可以说是非常灵活了!你都不用担心会给你带来任何麻烦。...Hasura:一个 BaaS(后端即服务),允许你在 Postgres 上创建数据、定义权限并使用 GraphQL 接口查询操作。

2.7K20

GraphQL实践1——集成JPA与MySQL

主页地址介绍官方定义:GraphQL 既是一种用于 API 查询语言也是一个满足你数据查询运行时。...GraphQL 对你 API数据提供了一套易于理解完整描述,使得客户端能够准确地获得它需要数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大开发者工具。...中文官网:https://graphql.cn/集成方案选择GraphQL经过近几年发展,SpringBoot官方、第三方都提供了starterSpringBoot官方提供starter:https...官方样例sakila数据,结构和数据地址如下https://downloads.mysql.com/docs/sakila-db.zip导入后如下图片工程配置引入最新SpringBoot框架,依赖如下...,输入也会有语法提示,比较方便图片唯一查询图片优缺点分析优点接口定义清晰,配置即接口前端按需获取字段,减少数据传输量接口整合、演进更加便利缺点减少字段个数对后端实现没有变化,并不能提升数据库性能样例源码地址

1.3K50

GraphQL 快速搭建服务端 API

对于完全没有接触过 GraphQL 读者,我们举个例子帮助理解: 考虑现有数据实体 Starship Crew ,它们对象类型如下: type Crew { name: String,...注意到两个映射类 LnCrew LnStarship 内部其实什么都没做,当它们和数据建立映射关系后查询出实例中会自动填充上数据库中定义字段。...比如现有一个查询星舰语句不需要 crew 属性,那整个执行过程当中,都不会发生 Crew 那张 select 。这一点也是 GraphQL 带来好处之一。...一些坑需要注意地方 使用 GraphQL 开发服务端 API 过程总体比较顺利,但也有不少需要当心地方坑,最后为读者们稍微介绍下。...监控细分 以往我们可以按 API 监控服务器性能负载,现在整个 GraphQL 只有一个入口,那监控这个 API 入口时间就没有意义了。

2.4K30

Go GraphQL 教程

设计这类 API 一般需要处理这些具体问题: 根据需求进行模型设计:即 model 层,模型设计核心对应数据库,所以又需要根据需求,设计字段字段类型、多对多等关系 抽象出资源实体,进行资源增删改查操作...GraphQL 尝试解决这些问题: 查询语法查询结果高度相似 根据需求获取字段 一个路由能获取多个请求结果 无需接口版本管理 1 既然是一种专门用于 API 查询语言,其必定有一些规范或者语法约束...:Pong 对象字段 data、code GraphQL 是一种专门用于 API 查询语言,有语法约束。...Step1: 定义类型对象字段 定义类型对象响应字段设计几乎保持一致。...: Vote } schema 完成了对对象类型定义一些操作,是后端开发者开发文档,是前端开发者API文档。

4.4K20

GraphQL 从入门到实践

什么是 GraphQL GraphQL 是一种面向数据 API 查询风格。...传统 API 拿到是前后端约定好数据格式,GraphQLAPI数据提供了一套易于理解完整描述,客户端能够准确地获得它需要数据,没有任何冗余,也让 API 更容易地随着时间推移而演进...它定义了字段类型、数据结构,描述了接口数据请求规则,当我们进行一些错误查询时候 GraphQL 引擎会负责告诉我们哪里有问题,详细错误信息,对开发调试十分友好。...一些常用解决方案如 Apollo 可以帮省略一些简单解析函数,比如一个字段没有提供对应解析函数时,会从上层返回对象中读取返回与这个字段同名属性。...,它 v4 版外部 API 只使用 GraphQL

2.5K31

基于ReactGraphQL黛梦设计与实现

所以就设计了一个黛梦(demo)------ 打通了GraphQL接口与前端交互流程,并且将数据存入MYSQL,分享下ReactGraphQL使用,大致内容如下: GraphQL增删改查接口设计与实现...CRUD包mysql使用 React React Hooks使用 因为涉及到React、GraphQL,还有MySQL一张用户User,所以我本来是想起一个“搞人实验”名字,后来斟酌了一下...后端这块是Node结合expressGraphQL接口,数据库用是MySQL。 GraphQL接口设计 我们先抛开GraphQL,就单纯接口而言。.../graphql'); }); 这里跟全局变量不同是,我这边对所有字段方法增加了相应注释(GraphQL就是好, 接口即文档),然后封装了mysql数据库操作方法,引入后去实现相关接口。...构思页面 根据后端这边提供接口,这里我们会有张页面,里面有通过列表接口返回数据,它可以编辑删除数据,然后我们有一个表单可以更新和新增数据,简单理一下,大致就这些吧。

1.8K20

API迭代中解放!GraphQL优缺点与团队价值

facebook推出GraphQL,是一个特点非常鲜明API查询语言。与SQL类似,GraphQL是一套规范,具体实现有很多框架。...如果需要请求heroheightmass字段,只需要简单添加就好。 从调用方角度,可以非常方便且自由地增加查询字段。...用户文章列表 (仅标题) 用户follower列表 (仅昵称) 传统REST流程如下图,需要请求3次,得到不同数据,还需要筛选组装成最终展示数据。...- api/app - apiv2/app 如果使用GraphQL,后端无需变更协议,只需要在原来接口增加字段就好,前端只需要请求新字段就好,不请求无效字段就能实现接口更新。...图片 数据结构适配GraphQL主要是一下几点: 不支持直接传输文件、视频等数据 数据量过大导致性能瓶颈 业务数据需适配GraphQL『图』,避免出现递归查询 数据库设计 依赖服务设计 可能存在字段重复冲突

3.2K341

面对极度复杂前后端业务场景,使用 GraphQL 正确姿势

有时这些数据并不能够从某个中直接获取到,可能要跨很多,这就需要前端后端之间进行相互磨合沟通才能获得最终结果。...当用户发现设备版本和服务器版本存在差异,执行需要更新时候,本质上是发送动态操作到GraphQL API层,然后由GraphQL API层发送消息到设备 ,之后消息通过SDK API到达MQTT,接着发布一系列请求到设备...现在使用GraphQL之后,我们发现了一个更优解决方案。 因为每个对象资源字段固定,完全可以让每个ComponentGraphQL Query片段一一对应。...第一点就是GraphQLN+1场景,即前端在查询数据时候可能首先要查到IDS数组,然后再map IDS数组重新对后端发起请求,最后后端通过多条SQL取到可能是列表数据。...一个现有的项目要从Restful切换到GraphQL,其实重构压力很大,且重构业务并行推进困难。

7.3K20

API接口架构REST vs GraphQL

GraphQL REST 数据冗余低效率,促使 Facebook 工程师在 2015 年创建了一种新 API 设计模式,称为 GraphQL。...与 REST 不同,GraphQL 需要一个模式来告诉客户端和服务器通过 API 允许哪些数据操作。这些是用 GraphQL 模式语言定义,它是一种与语言无关具有强大类型系统格式。...在我们 GraphQL 模式中,我们将定义Article类型,该类型具有必需整数id字段用于title、image可选字符串字段description,如下所示: type Article {...反过来,这意味着 GraphQL 本质上是自记录。一旦字段、类型或查询发生更改,基于架构文档可以自动更新。 没有版本控制 API 每次应用更改时,API 可能也需要更改。...使用 GraphQL,可以从模式中删除不推荐使用字段,而不会影响现有查询。这为应用程序提供了对新功能持续访问,并鼓励更清洁、更可维护代码。

1.6K30

在 Laravel 应用中构建 GraphQL API

代码示例:产品列表用户列表 API 例子 昨天我们学习了 在 Visual Code 中搭建 Laravel 环境,现在我们来学习 Facebook GraphQL 。...graphql.org GraphQL 可以提升 API 调用灵活性,我们可以像写数据库查询语句一样来请求 API 来获取所需要数据,这对构建复杂 API 查询来说非常有用。...创建模型 像下面这样创建模型 user_profiles, products, product_images,别忘了还要创建模型间关系。 ? 4....创建查询定义 GraphQL 类型 GraphQL查询与 Restful API末端路径查询是一样,查询只是用于获取数据,以及创建、更新、删除操作。...GraphQL 类型 用于定义查询中每个字段类型定义,类型会帮助我们格式化查询结果中有格式字段,例如布尔类型,字符串类型,浮点类型,整数类型等等,以及我们自定义类型。

3.4K20
领券