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

GraphQL最突出的架构优势是什么?

它们通常以 接口 或 抽象类 的形式出现。...数据图从客户端延伸到服务器,并为现代 Web 应用程序中获取数据和更改状态面临的最常见基础架构问题提供了答案 为了通过 GraphQL 与后端服务通信,Apollo Client 公开了几种客户端方法...如果你认为自省(introspection)是全面的文档,那么可以说 GraphQL 是自文档化的,并且你的 API 文档无法失去同步。...6关注点的扩展和分离 GraphQL 原则指出, “你的公司应该有一个统一的图,而不是让各个团队创建很多图。” 随着越来越多的团队开始使用 GraphQL,公司内部会出现多个图的情况。...使用 Apollo Federation,每个服务团队都可以从其限界上下文中构建和管理自己的 GraphQL 服务,将其注册到一个 Apollo 网关,从而在整个企业中分布化 GraphQL 的运维工作

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

API架构风格对比:SOAP vs REST vs GraphQL vs RPC

为了在扩容快速集成应用,实际的API会使用协议或规范来定义消息传递的语义和语法。这些规范构成了API架构。 过去几年曾出现了几种不同的API架构风格,每种风格都有其特定的标准数据交互模式。...可发现性低:RPC无法对API进行自省或无法通过发送的RPC请求来理解其调用的功能。...乏味的消息更新:在添加和移除消息属性需要额外的工作量,这导致SOAP的采用率下降。 SOAP的使用场景 目前,SOAP架构大部分用于内部集成企业或其他可信任的伙伴。...现在,GraphQL生态扩展了相关的库,并出现了很多强大的工具,如Apollo, GraphiQL, and GraphQL Explorer。...详细的错误消息:与SOAP类似,GraphQL提供了详细的错误信息,错误信息包括所有的解析器以及特定的查询错误。 灵活的权限:GraphQL允许在暴露特定的功能的同时保留隐私信息。

2.8K11

解密国内BAT等大厂前端技术体系-携程篇(长文建议收藏)

引言 进入2019年,大前端技术生态似乎进入到了一个相对稳定的环境,React在2013年发布至今已经6年间了,Vue 1.0在2015年发布,至今也有4年间了。...同时平台治理提供例如注册服务、排查故障、服务熔断、查看调用等功能,方便平台化技术的运营。 CRN - Ctrip React Native ?...为了解决首屏渲染性能问题,我们先后开发了框架拆分和预加载、业务按需加载、业务预加载和渐进式渲染方案,稍后会就这些方案做详细介绍。...发布运维,主要是提供发布系统和性能、错误监控平台,让业务开发同事能够有完备的系统去发现和解决线上问题。...Apollo-GraphQL 是 Node.js 社区里,比较知名和成熟的 GraphQL 框架。做了很多的细节工作,也有一些相对前沿的探索,比如 Apollo Federation 架构等。

1.4K20

GraphQL 是一个陷阱?

【推文 3 】非图 API 的不良性能和生命周期错误已经够让我们心惊胆战了,面对如此大量的多对多连接,还需要用户和我们自己来预测?这可不是人类能干的活儿,问题都成了吓人的玩意儿。...在构建 GraphQL API ,有很多方法可以进行改善,比如正确设置批处理和缓存数据加载;如果您将对象类型视为 “资源”或“端点”,安全性与其它 API 都非常相似。...【最后一条推文】另外还有一件事要讨论,如何让系统以可预测的、有限度的方式变慢,往往比让系统以不可预测的、无限度的方式变慢更有用,“不可预测”和“无限”延时通常同时出现。...这个主题可以作为提醒在构建 GraphQL API 不要做什么,然而有些地方像稻草人一样,错误地描述了 GraphQL 构建的目的。...软件架构如何“以不变应万变” 从维护性工作到软件开发革命,运维 15 年间的大逆转 点个在看少个 bug

98410

「web应用架构」有原则GraphQL

虽然经常讨论访问控制,但也需要注意需求控制,因为它在GraphQL的任何生产部署中都是至关重要的。允许用户不考虑成本执行任何可能的查询是错误的,因为用户没有能力管理它对生产系统的影响。...控制需求的最佳方法包括: 当不受信任的用户访问生产系统,他们应该只发送由经过验证的应用程序开发人员预先注册的查询,而不是允许他们使用应用程序的凭据发送任意查询。...作为第二道防线,在执行查询之前估计它的成本,并为每个用户和每个应用程序制定查询成本预算,可以防止过度使用预先注册的操作,或者在无法进行预先注册的操作的情况下。...将GraphQL层与服务层分离 采用分层架构,将数据图功能分解为单独的层,而不是整合到每个服务中。 在大多数API技术中,客户机不直接与服务器通信,除非在开发中。...原文:https://principledgraphql.com 本文:https://pub.intelligentx.net/application-architecture-principled-graphql

72410

基于 egg.js 构建 graphql api 服务

基于 egg.js 构建 graphql api 服务 登录快速注册 基于 egg.js 构建 graphql api 服务 Egg.js 简介:https://eggjs.org/zh-cn/index.html...= { router: '/graphql', // 是否加载到 app 上,默认开启 app: true, // 是否加载到 agent 上,默认关闭 agent...debug: true, // 一个布尔值,如果发生执行错误,它将打印其他调试日志记录 }, }; 在中间件中开启 graphql config.middleware = [ 'graphql...在定义字段需要注明类型,这也是 graphql 的特点之一,是支持强类型的。如果非空,就在类型后面跟上一个!号。graphql 还包括枚举类型,列表和自定义类型。...可以理解为 {id: 1, name: 'jack'} 项目启动 npm run dev 在浏览器中输入 http://127.0.0.1:7001/graphql 出现如下界面说明已经 graphql

1.8K10

凤凰架构 - 架构视角 - 访问远程服务

《凤凰架构:构建可靠的大型分布式系统》- 周志明 今天分享的是凤凰架构的第二章:架构视角。...、普适、高性能的完美协议出现,RPC 领域也出现了百家争鸣的时代,各种 RPC 框架层出不穷(如RMI、Dubbo、gRPC、brpc 等) 这些RPC框架也不再去追求大而完美,而是朝着有针对性的几个方向走...: 面向对象(代表为 RMI、.NET Remoting) 性能(代表为 gRPC 和 Thrift) 简化(代表为 JSON-RPC) ......近些年,也有朝着更高层次(如提供负载均衡、服务注册、可观察性等方面的支持)与插件化(如 Dubbo,支持多种协议切换,支持各种插件)的方向发展 REST 设计风格 REST 一种面向资源编程的思想(REST...注:GraphQL Java 6 周年时,也就是前几天,Spring GraphQL 1.0 里程碑版正式发布

34630

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

因为后端接口能够满足数据需要,仅仅是在做显示的时候对数据进行了选择性显示,但接口的数据是存在冗余的,这种情况一个是存在数据泄露风险,另外就是数据量过大造成网络流量过大,页面加载缓慢,用户流量费白白消耗...GraphQL应用的基本架构 下图是一个 GraphQL 应用的基本架构,其中客户端只和 GraphQL 层进行 API 交互,而 GraphQL 层再往后接入各种数据源。...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...---- Part 3 GraphQL技术接入架构 Graphql 技术接入架构 那么,该怎么设计来接入我们现有的系统中呢?...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.3K40

GraphQL详解

因为后端接口能够满足数据需要,仅仅是在做显示的时候对数据进行了选择性显示,但接口的数据是存在冗余的,这种情况一个是存在数据泄露风险,另外就是数据量过大造成网络流量过大,页面加载缓慢,用户流量费白白消耗...GraphQL应用的基本架构 下图是一个 GraphQL 应用的基本架构,其中客户端只和 GraphQL 层进行 API 交互,而 GraphQL 层再往后接入各种数据源。...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...Part 3 GraphQL技术接入架构 Graphql 技术接入架构 那么,该怎么设计来接入我们现有的系统中呢?...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.5K00

GraphQL

因为后端接口能够满足数据需要,仅仅是在做显示的时候对数据进行了选择性显示,但接口的数据是存在冗余的,这种情况一个是存在数据泄露风险,另外就是数据量过大造成网络流量过大,页面加载缓慢,用户流量费白白消耗...GraphQL应用的基本架构 下图是一个 GraphQL 应用的基本架构,其中客户端只和 GraphQL 层进行 API 交互,而 GraphQL 层再往后接入各种数据源。...例如定义了一个名为User的对象类型,并对其字段进行定义和施加限制条件: User字段控制 那么,返回数据,像下面这种情况就是不允许的: 错误的表示 Graphql会根据Schema Type来自动返回正确的数据...Part 3 GraphQL技术接入架构 Graphql 技术接入架构 那么,该怎么设计来接入我们现有的系统中呢?...客户端实现 在客户端,Graphql Client目前有下面的语言支持: C# / .NET Clojurescript Elm Flutter Go Java / Android JavaScript

2.6K65

干货 | 携程机票Node.js开发实践

我们也从最初用Node.js来完成前后端的架构分离到最近使用GraphQL来做微服务,机票部门在Node.js的应用探索上越走越宽。...一、前后端分离 在机票事业部前端开发的web1.0代,整个前后端代码耦合在一起,采用的是典型的服务端 MVC架构。 ?...为降低每个页面的资源加载耗时,会对页面资源文件进行拆分和后续页面资源的预加载,同时利用大数据进行用户行为的预测以及接口数据预处理,使得页面速度的加载耗时得到比较大的提升。...整个Node层的架构和H5应用层类似,也是采用PM2+Node.js(8.9.4)+Express(4.0)+CtripUtil,为了提供标准的restfulAPI,我们在服务入口做了自动化的注册方式,...query=),通过调用的request来区分; 调用方式:Rest获取多个不同接口数据,需要并发调用多次,而GraphQL可以合并查询,降低网络开销; 于是我们开始在团队内部试点GraphQL,在技术架构上采用

1.4K20

干货 | 携程机票Node.js开发实践

我们也从最初用Node.js来完成前后端的架构分离到最近使用GraphQL来做微服务,机票部门在Node.js的应用探索上越走越宽。 一、前后端分离 ?...在机票事业部前端开发的web1.0代,整个前后端代码耦合在一起,采用的是典型的服务端 MVC架构。 ?...为降低每个页面的资源加载耗时,会对页面资源文件进行拆分和后续页面资源的预加载,同时利用大数据进行用户行为的预测以及接口数据预处理,使得页面速度的加载耗时得到比较大的提升。...整个Node层的架构和H5应用层类似,也是采用PM2+Node.js(8.9.4)+Express(4.0)+CtripUtil,为了提供标准的restfulAPI,我们在服务入口做了自动化的注册方式,...query=),通过调用的request来区分; 调用方式:Rest获取多个不同接口数据,需要并发调用多次,而GraphQL可以合并查询,降低网络开销; 于是我们开始在团队内部试点GraphQL,在技术架构上采用

1.2K20

GraphQL 初体验,Node.js 构建 GraphQL API 指南

如果你的应用程序不断增大,你会发现自己在你的架构中添加了更多的存储结构 -- PostgreSQL 可能是存储用户信息的好地方,而 Redis 可能是存储其他种类信息的好地方 -- 对 GraphQL...缓存 基于 REST 的 API 在缓存不需要过度关注,因为它们可以构建在 Web 的其他部分使用现有 HTTP 头策略上。GraphQL 不具有这些缓存机制,这会对重复请求造成不必要的处理负担。...首先我们需要一个函数来加载所有请求的对象。...默认情况下,express-graphql 会将当前的 HTTP 请求作为上下文的值来传递,但在设置服务器可以更改: app.use( '/graphql', express_graphql({...例如,无论成功与否,GraphQL 仅制定一个状态码 200.在这个响应中会返回一个特殊的错误键,供客户端解析和识别出错,因此,错误处理可能会有些棘手。

8.3K40

4种主流的API架构风格对比

在 RPC 中,无法对 API 进行检验总结,或者发送请求来开始理解根据需求应该调用哪个函数。 函数爆炸性增长。创建新函数非常容易。...内置错误处理。SOAP API 规范允许返回带有错误码及其说明的的 XML 重试消息。 一系列的安全拓展。SOAP 与 ES-Security 集成,因此 SOAP 可满足企业级事务要求。...(如何从 GraphQL 端点仅获取所需要的数据,图源:Mohit Tikoo) 如今,GraphQL 的生态系统正在蓬勃发展,出现了例如 Apollo、GraphiQL 和 GraphQL Explorer...详细的错误消息:GraphQL 以类似于 SOAP 的方式提供所发生错误的详细信息。它的错误消息包括所有解析器,并指向确切的发生故障的查询部分。...因此,GraphQL 为移动设备提供了更有效的数据加载方式。 复杂的系统和微服务。GraphQL 能够隐藏其 API 背后的多个系统集成的复杂性。

2.3K30

REST API和GraphQL API的比较

GraphQL 与 REST: GraphQL 和 REST API 之间的主要区别在于 GraphQL 是一种查询语言,而 REST 是一种基于网络的软件的架构概念。...在 GraphQL 架构中,客户端提交查询以获取数据。 典型场景 REST API 假设您有一个 API 来获取学生数据。...动图 )在 GraphQL 和 REST 之间进行选择要考虑的事项 安全 REST API 使用 HTTP,允许使用传输层安全性进行加密,并提供多种 API 身份验证选项。...GraphQL 通过单个端点提供,通常是 (/graphql),并且与 HTTP 规范不同。因此,无法像 REST API 那样缓存查询。 但是,由于可用的工具,客户端缓存优于 REST。...GraphQL 中的任何合法答案都应该是 200,包括数据和错误响应。客户端工具将有助于更有效地管理错误错误作为特定错误对象下的响应主体的一部分进行处理

36410

4种主流的API架构风格对比

在 RPC 中,无法对 API 进行检验总结,或者发送请求来开始理解根据需求应该调用哪个函数。 函数爆炸性增长。创建新函数非常容易。...内置错误处理。SOAP API 规范允许返回带有错误码及其说明的的 XML 重试消息。 一系列的安全拓展。SOAP 与 ES-Security 集成,因此 SOAP 可满足企业级事务要求。...如何从 GraphQL 端点仅获取所需要的数据,图源:Mohit Tikoo 如今,GraphQL 的生态系统正在蓬勃发展,出现了例如 Apollo、GraphiQL 和 GraphQL Explorer...详细的错误消息:GraphQL 以类似于 SOAP 的方式提供所发生错误的详细信息。它的错误消息包括所有解析器,并指向确切的发生故障的查询部分。...因此,GraphQL 为移动设备提供了更有效的数据加载方式。 复杂的系统和微服务。GraphQL 能够隐藏其 API 背后的多个系统集成的复杂性。

2.3K20

GraphQL-BFF:微服务背景下的前后端数据交互方案

前端经常吐槽后端的字段名过于冗长,或者不知所云,或者拼写错误,或者不符合前端表述习惯。...GraphQL 会解析我们的查询语句,然后跟 Schema 进行数据形状的验证,确保我们查询的结构是存在的,参数是足够的,类型是一致的。任何环节出现问题,都将返回错误信息。...首屏一次,非首屏一次,滚动按需加载 N 次,多个 2 级页面里 M 次。...也即是说,使用 GraphQL 搭建 BFF,如果出现前后端分工、沟通等方面的矛盾。...无法共享前端开发的基础设施,这不是微前端,这是一种人员组织架构上的混乱。 GraphQL 让我们看到,基于领域模型的微前端架构,可能是更好的方向。

3.6K72

干货 | 万字长文全面解析GraphQL,携程微服务背景下的前后端数据交互方案

前端经常吐槽后端的字段名过于冗长,或者不知所云,或者拼写错误,或者不符合前端表述习惯。...GraphQL 会解析我们的查询语句,然后跟 Schema 进行数据形状的验证,确保我们查询的结构是存在的,参数是足够的,类型是一致的。任何环节出现问题,都将返回错误信息。...首屏一次,非首屏一次,滚动按需加载 N 次,多个 2 级页面里 M 次。...也即是说,使用 GraphQL 搭建 BFF,如果出现前后端分工、沟通等方面的矛盾。...无法共享前端开发的基础设施,这不是微前端,这是一种人员组织架构上的混乱。 GraphQL 让我们看到,基于领域模型的微前端架构,可能是更好的方向。

3.5K21
领券