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

前端开发使用GraphQL——服务端技术选型

例如: 接口存在很多冗余字段 字段命名不规范 接口文档很多丢失、过时 部分接口功能耦合 实现一个功能的能力分散在多个接口里面 ETC......因为本人是前端开发,对nodejs比较熟悉,所以选择在nodejs运行环境下开发GraphQL服务,下面开始我的技术选型 开发语言选择 2021年了,新项目基本都是使用typescript。...Nodejs框架选择 express:生态丰富,但是过于简单,自己需要实现很多其他内容 koa: 同上,生态丰富,但是过于简单,自己需要实现很多其他内容 eggjs: 阿里基于koa开发的框架,插件丰富...,文档优秀,有GraphQL插件,但是对使用TS开发GraphQL支持不友好 nestjs: 完全支持typescript,官方支持GraphQL etc......Nestjs/GraphQL: Nestjs框架基于typescript实现的GraphqL模块。

1.8K20

graphql+koa2 前端bff层

使用graphql的优势: 前端把握查询的主动权,可定义你需要查询的字段过滤冗余,另外减少两端的沟通 接手bff层前端可作为空间更大,包括做一些鉴权 请求合并更加便利(以前初始化多个请求需要一起返回都是使用...又或者我们新增了字段需要查询新增的字段后端同学也需要更改。基于这些尝试引入node+graphqlgraphql的查询优势在于前端可以主动控制字段的获取(只要这些字段是可以访问的)。...后端同学直接集成 (java接口(restful或者graphql)-->前端) 前端增加中间服务层(java接口-->前端中间服务层nodejs(graphql)-->前端) 对于第一种方式,后端同学可能更改会更大...所以我们选了第二种,引入nodejs中间层作为请求的转发。...} 这就是表示我们只取id这个字段那么返回的数据中只会有id这个字段,如果我们还需要其他字段比如我们还需要groupName这个字段,就可以这样写 exportList(params: $params)

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

前端菜鸟让老接口提速60%的原理与实现

本文将为大家分享通过nodejs + graphQL + redis + schedule技术组合对老接口进行优化提速,提升前端体验的原理与实践,希望与大家一同交流。...如何从一百多个字段中,抽取任意n个字段,这就用到graphQLgraphQL按需加载数据只需要三步: 定义数据池 root; 描述数据池中数据结构 schema; 自定义查询数据 query。...为了方便理解,我用“屌丝追求女神”的场景来说明graphQL按需加载字段的实现。...在nodejs中使用graphql这个库,里面包含了graphQL操作字段的所有api。我们用buildSchema这个方法来构建女神信息的schema。 那么如何描述女神信息的schema呢?...映射到我们业务具体场景中:老接口返回的每条数据都包含100个字段,我们配置schema,获取其中的10个字段,这样就避免了剩下90个不必要字段的传输。 graphQL还有另一个好处就是可以灵活配置。

1.2K21

【JS】197-【译】更优秀的GraphQL中文文档-服务器端

Type System 如果你已经见过 GraphQL query,那么你就知道 GraphQL 查询语言基本上是在对象上查询指定的字段。...Object types and fields GraphQL schema 最基础的组件是 object types,它标识了你可以从后端服务中获取哪些对象和子字段。...说明该字段必填,也就是说在你发起GraphQL query时,该字段必须是有值的,在类型语言中,我们用感叹号来标识。 [Episode!]!...Scalar types 一个 GraphQL object type 具有名字和字段,但是在某些时候,这些字段必须解析成某些具体数据。...然后客户端是不会知道这些细节的,客户端完全依照 enum 值的字符串名称来操作(译者注:这里我也没太懂,等用了 nodejs 实现一遍,再回来补充) Lists and Non-Null 这一段属于废话又多

1K20

GraphQL 浅谈,从理解 Graph 开始

虽然 project 在类型系统里定义了三个字段,但我们(客户端)只需要 tagline 这个字段,服务端就只返回这个字段,而 contributors 里的 User 和其对应字段,本次查询( )并不关心...服务端能对响应的形状和性质做出一定保证,而 是弱类型的,缺少机器可读的元数据; 分工: 让服务端定义好支持哪些 ,把对数据的 需求下放到客户端管理,分工明确的同时保持对 API 的聚焦; 分层: 的 本身是一组分层的字段...感觉在吐槽的样子) 预测性: 的 只返回客户端要求的内容,没有任何冗余(不浪费流量),而且它只有一个接口地址,由此衍生了另一个特性; 兼容性:需求变动带来的新增字段不影响老客户端,服务端再也不需要版本号了...GraphQL API V4。...Python、Ruby、Nodejs.js,设计3次 GraphQL Sever:Zero to GraphQL in 30 Minutes 欢迎评论交流~ 如果对您有所帮助,可以转发到朋友圈加速

1.4K90

安全地将 Netflix 迁移到 GraphQL

对于请求非幂等字段GraphQL 查询或变更,我们无法进行 Replay 测试。 在非功能需求(如缓存和记录用户交互)的情况下,我们肯定无法进行 Replay 测试。...对照组的流量使用传统的 Falcor 堆栈,而实验组利用新的 GraphQL 客户端,并指向 GraphQL Shim。为了确定对客户的影响,我们可以比较各种指标,如错误率、延迟和渲染时间。...例如,以下是 Shim 服务和 Video 服务定义的两个 GraphQL 模式: 在第一阶段,GraphQL Shim 首先定义了 certificationRating 字段(例如 Rated R...具有 @override 指令的相同字段的存在告知 GraphQL 网关将此字段的解析路由到新的 Video Service,而不是旧的 Shim Service。...系统性能:对延迟和资源使用情况的了解帮助我们理解迁移后扩展配置的变化。 注意事项 对客户造成负面影响:Sticky Canary 可能对真实用户产生影响。

13430

Geth GraphQL使用说明

由于区块链数据的结构特点,上面的问题被进一步放大了,多次执行一个查询(例如eth_getBalance)需要确保查询是同一世界状态甚至是在同一个节点上:当你使用多个节点进行负载均衡处理时,不同的后台节点可能有不同的同步延迟...这篇文章非常适合不熟悉GraphQL的开发者快速理解GraphQL的基本概念,以及如何利用NodeJS技术栈实现GraphQL的服务端与客户端:从SQL到GraphQL。...3、开启Geth的GraphQL支持 Geth 1.9.0引入的对GraphQL的原生支持。在启动geth时,使用--graphql命令行标志就可以开启GraphQL API接口了。...支持,就可以通过Geth预置的GraphQL浏览器来进行测试,GraphQL服务默认在8547端口监听,API访问路径为/graphql。...语句: 查询日志logs 查询条件:使用filter对象指定 返回字段:transaction,其结构如上所示 5、实例对比JSON-RPC API和Geth GraphQL 假设我们要查询最新的10

1.7K00

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

综上所述,这些响应的有效载荷可能超过了渲染你当前页面的需要,而且每个 API 调用都有网络延迟,总的延迟加起来可能非常恐怖。...就像 REST API 可能会使用 JSON 模式一样,GraphQL 使用 SDL 或 Schema 定义语言来定义它的模式,这是一种描述 GraphQL API 可用的所有对象和字段的幂等方式。...Addresses 还定义了他自己的几个字段。(顺便说一下,GraphQL 模式不仅有对象,字段和标量类型,还有更多,你也可以合并接口,联合和参数以构建更复杂的模型,但本文中不会介绍)。...GraphQL 的类型功能会给查询过程提供严格的校验,你甚至可以尝试请求不存在的字段。...随着应用程序的成长和变化,它们的 API 也会随之变化,很可能需要删除或修改 GraphQL 字段和对象。

8.3K40

与我一起学习微服务架构设计模式8—外部API模式

外部API的设计难题 Web应用在防火墙内部运行,它们通过高带宽、低延迟的局域网访问服务。其他客户端在防火墙之外运行,通过较低带宽、较高延迟的互联网或移动网路访问。...服务可能选用对客户端不友好的进程间通信 其他类型客户端API的设计难题 web应用程序 web应用程序直接访问后端服务是可以的 基于浏览器的JavaScript应用程序 与移动应用程序具有相同的网络延迟问题...简单情况下,查询文档包含查询的名称,参数值及要返回结果的对象字段。 把模式连接到数据源 当GraphQL服务器执行查询时,必须从一个或多个数据存储中检索所请求的数据。...通过将解析函数附加到模式定义的对象类型字段,可以将GraphQL模式与数据源相关联。GraphQL通过调用解析器函数检索数据,以此实现API组合模式。...GraphQL通过递归调用Query文档中指定的字段解析器函数来执行查询。首先,它执行查询解析器,然后递归调用结果对象层次结构中字段的解析器。

1.3K30

【Kotlin】属性 与 幕后字段 ( 属性声明 | 属性初始化器 | 属性访问器 | field 属性幕后字段 | lateinit 延迟初始化属性 )

延迟初始化属性 lateinit I ...., 只能在属性访问器中可以使用 field 获取该值 ; ⑤ 延迟加载属性 : 该属性只能是引用类型 , 并且不能有初始化器和访问器 ; II ....延迟初始化属性 lateinit ---- 1 ....属性定义位置 : 尽量定义在类中 , 1.2 之后的 Kotlin 版本可以定义在主构造函数 和 局部变量中 , 不过为了代码兼容 , 还是在类中定义延迟初始化属性 ; 5 ....延迟初始化属性为空 : 如果在没有初始化属性值时 , 调用该 lateinit 延迟初始化属性 , 会抛出异常 ; 6 . lateinit 延迟初始化属性推荐示例 : class Student {

1.2K10

PayPal大规模采用GraphQL的探索和实践

使用 GraphQL,客户端可以请求一组字段,并准确地取回这些字段,从而无需在客户端进行数据格式化和重塑。这大大加快了我们交付 UI 功能的速度,并且使我们的应用程序更轻量。...统一体验:PayPal 中的每个流程都有自己的 NodeJS 应用程序,每个团队都有自己的 ReactJS 实现。我们希望提供一个层来提供统一的前端体验,同时为我们提供一个后端来协调 API。...字段和方法级检测:我们有内部检测工具,可以显示端点花费的时间和使用的参数,但是很难找到使用的字段。如果没有这些信息,我们就无法知道某个字段是否可以安全删除,或者是否仍在使用。...使用 GraphQL,我们可以获得字段级的检测,并清楚了解哪个解析器花了多长时间、常见错误以及调用了哪些字段。这个字段级检测有助于智能地弃用不再使用的字段。...通过 GraphQL,我们能够展示我们的学习、工具和字段级别的监测情况。 8 你如何开始在自己的公司采用 GraphQL

3K20

超越 REST

我们假设有一个 Docker 容器,其上运行了一个带有 Graphile 库的非常简单的 NodeJS Web 服务器(以及一些用于安全、日志、度量和监控的 Netflix 内部组件),可以为快速开发工作提供...这最终能实现几个不同的目标: 可以独立于 GraphQL 模式中公开的视图来更改底层表。 视图可以进行基本的格式化(比如将 TIMESTAMP 字段呈现为 ISO8601 字符串)。...(hello world 和 2 这两个子字段)在生成的 GraphQL 模式中是不透明的。...单击 CustomType 将显示自定义类型的字段及其注解: 请注意,在自定义类型中,第二个字段被命名为 field_2,但 Graphile 智能注解将该字段重命名为 field_two,通过 Graphile...另外,对这两个字段的描述都被显示在生成的 GraphQL 模式中。

2.9K20

GraphQL及元数据驱动架构在后端BFF中的实践

GraphQL编译器是基于Java的,经验表明在大流量场景实时解释的情况下,这部分代码将会成为CPU热点,而且还占用响应延迟,Schema或Query越复杂,性能损耗越明显。...图16 PropertyDataFetcher成为CPU热点 问题2:列表的计算耗时问题,列表计算是循环的,对于查询结果中存在大列表的场景,此时循环会造成整体查询明显的延迟。...2)类型转换优化 通过GraphQL查询引擎拿到的GraphQL模型,和业务实现的DataFetcher返回的取数模型是同构,但是所有字段的类型都会被转换成GraphQL内部类型。...3)列表计算优化 当列表元素比较多的时候,默认的单线程遍历列表元素计算的方式所带来的延迟消耗非常明显,对于响应时间比较敏感的场景这个延迟优化很有必要。...字段实例执行完:字段实例关联的对象实例都被GraphQL执行完了。

1.6K50

杭州站 | 第一届 GraphQLParty

什么样的业务场景和团队适合用 GraphQLGraphQL 对于前端和后端意味着什么?会带来什么职能变化? 什么时机适合从 RESTFul API 迁移到 GraphQL?...为阿里里里影业、万达影业、腾讯互娱等公司提供大规模数据分析和产品技术解决方案,并负责技术团队搭建 邓若奇 国内某大型电商公司 用户体验部门 前端开发专家,9年开发经验(4年 .Net 开发,5年前端/ Nodejs...开发) -现为 用户体验部门前端工程团队主要负责人,负责组件平台、CDN 源站、云构建平台、实时日志服务等基础设施设计、开发和维护 -现为集团 B2B Nodejs 接口人,负责 Nodejs 工程化推进...(DevOps)与技术答疑 -现为集团内部基础 Nodejs 客户端、Eggjs 插件开发与维护者 乔禹 国内某大型电商公司高级技术专家,8年开发经验,现消费者纠纷/商家通用服务团队 Leader...在 GraphQL 的实践上,陆陆续续用 nodejs 写过的几个项目,有微服务,也有作为 BFF 层的 web server。

32610
领券