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

在 redux 应用中使用 GraphQL

正如 Sashko Stubailo 指出的: 不幸的是,在 Redux 应用程序中异步加载服务器数据的模式还没有建立起来,并且经常需要使用外部帮助程序库,如 redux-saga。...您需要编写自定义代码来调用服务器接口,解释数据,对其进行规范化并将其插入到存储中 - 同时跟踪各种错误和加载状态。 在本教程中,您将学习如何通过 Apollo Client 来获取和管理数据。...快速的启动一个服务端环境 启动一个 redux 脚手架 增加一个 GraphQL 客户端 (Apollo Client) 使用 GraphQL 获取数据 获取更多的数据 接下来要做的 1....客户端正在运行,现在是开始添加 GraphQL 客户端的时候了。我们的目标是使用 GraphQL 查询,从服务器轻松获取数据并将其呈现在着陆页(HomeView)中。 3....在我们的 GraphQL 服务器中,并没有定义如何获取 authors。

1.9K10

如何在 React.js 项目中使用 GraphQL

在本指南中,我们将介绍如何GraphQL 无缝集成到您的 React.js 项目中。什么是 GraphQLGraphQL 是用于 API 的查询语言,也是用于执行那些查询的运行时。...它允许您请求所需的数据,从而使 API 调用更加高效。与传统的 REST API 不同,传统的 REST API 由服务器确定响应结构,而 GraphQL 则使客户端能够定义其所需数据的形状和结构。...连接到 GraphQL 服务器要在 React.js 项目中使用 GraphQL,您需要连接到 GraphQL 服务器。...在这个例子中,假设您有一个在 http://localhost:4000/graphql 上运行的 GraphQL 服务器。您可以将此 URL 替换为实际的 GraphQL 服务器端点。...处理加载和错误状态,并在数据可用时显示数据。

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

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

作者 | Khalil Stemmler 策划 | 田晓旭 在服务器使用 GraphQL 代替 REST 是有很多好处的,使用 Apollo Client 取代自己编写的数据获取逻辑也有很多优势。...简化的数据获取架构,其中视图可以是任意前端框架——nerdwallet 数据图在连接的两端均有 Apollo 服务器和客户端,它可以简化获取逻辑、错误逻辑、重试逻辑、分页、缓存、optimistic UI...API 客户端了解如何解决该请求的唯一方法是检查错误响应(指望错误消息描述了所需的信息,否则也没用)。...由于 GraphQL 语言是通行(ubiquitous)且标准化的,因此人类 和机器 会更容易理解如何集成和使用它。...在架构层面,由于 GraphQL 向客户端公开单个端点,因此它满足了这一原则。 客户端隐藏了字段解析机制的所有复杂性,它只需关注如何GraphQL 服务器之上构建即可。

2.1K20

GraphQL在现代Web应用中的应用与优势

后端设置(使用graphql-yoga)首先,我们需要创建一个GraphQL服务器。...前端设置(使用Apollo Client)接着,我们需要在前端应用中配置Apollo Client,与我们的GraphQL服务器通信:npm install apollo-boost @apollo/client...下面展示如何使用一个自定义的@auth指令来控制访问权限。首先,假设我们定义了一个@auth指令,用于限制对某些字段的访问,要求用户必须登录。...错误处理自定义错误处理,提升客户端对错误的处理能力。...减少错误:客户端定义查询结构,服务器返回预期的形状,降低了由于接口不匹配导致的错误。更好的API设计:强类型系统确保了数据的一致性和正确性,使得API更加易于理解和维护。

6210

GraphQL是API的未来,但它并非银弹

使用 Next.JS 的 BFF 方法相比,在前端获得相同的结果会更复杂。如何使用 GraphQL 实现 Etags?如果没有任何变化,如何使 GraphQL 服务器返回 304 状态码?...你必须以一种破坏性的方式引入此更改。了解下 Facebook 是如何避免破坏客户端的,这很有趣。 在 GraphQL 的情况下,模式演进意味着弃用一个旧字段,并添加一个新字段。...GraphQL 服务器可以自由地使用它期望的任何类型进行响应。如果你发送一个查询,则服务器的响应可以不符合自省响应中的 GraphQL 模式。以 Apollo Federation 为例。...你将模式上传到模式注册中心,然后因为错误部署了 GraphQL 服务器错误版本。如果你更改字段的类型,客户端可能就无所适从了。...8 错误处理更好 关于错误处理,作者描述了这样一个场景:与使用部分数据响应的单个 GraphQL 查询相比,客户端将不得不进行 3 次连续的 REST API 调用。

2K10

怎样使用 apollo-link-state 管理本地数据

但当 Apollo Client 进入 2.0 版本,不再依赖于 Redux,如何去同步本地和远端的数据,变得比原来更加棘手。...解决问题的基础 我们知道这个问题需要解决,现在让我们思考一下,如何正确地在 Apollo Client 中管理状态?...Apollo Link 使得在 Apollo Client 中管理本地的数据成为可能,从一个 GraphQL 服务器中获取数据,可以使用 HttpLink,而从 Apollo 的缓存中请求数据,则需要使用一个新的...Resolvers 在使用 Apollo Client 管理应用状态后,Apollo cache 成为了应用的单一数据源,包括了本地和远端的数据。那么我们应当如何查询和更新缓存中的数据呢?...如果你以前在服务器使用graphql-tools,那么你会发现两者的 resolver 的类型签名是一样的。 .

2.3K100

干货 | 携程基于 GraphQL 的前端 BFF 服务开发实践

Web Framework 框架 • apollo-server-koa   适配 koa v2 的 Apollo Server • data-loader   优化 GraphQL Resolver...由于空类型的字段不能为空,字段错误被传播到父字段中处理。如果父字段可能是null,那么它就会解析为null,否则,如果它是一个null类型,字段错误会进一步传播到它的父字段。...如上,在 GraphQL Specification 的 6.4.4Handling Field Errors 中,明确了如何置空的问题。...如前端需要查询可用门票和价格明细并不需要默认添加到购物车内,需要将 mutation 换成 query 即可,服务端无需为此做任何调整。...6.2 虚拟路径 由于 GQL 唯一入口的特性,服务捕获到的访问路径都是 /basename/graphql,导致定位错误很困难。

2.5K20

为什么我使用 GraphQL 而放弃 REST API?

没有静态类型意味着要注意类型验证 无论如何努力避免这种情况,你迟早会遇到 JSON 属性拼写错误、发送或接收的数据类型错误、字段丢失等问题。...如果你的客户端和 / 或服务器编程语言是静态类型的,并且你不能用错误的字段名或类型构造对象,那可能没问题。...如果开发团队不是全栈的,那么服务器和客户端团队之间的沟通就至关重要,在没有机器可读的 API 规范的情况下更是如此。 GraphQL 如何做得更好?...它可能看起来像 ORM,但它不是:你可以完全控制如何设计数据库模式,以及使用什么索引。...与原生 iOS 应用一样,Apollo iOS 是一个相对轻量级的、易于使用的库。 延伸阅读 https://desiatov.com/why-graphql/?

2.3K30

用ServBay快速构建下一代GraphQL应用

在本指南中,我们将深入探讨如何利用ServBay一站式环境和Docker,构建可扩展的GraphQL微服务。...我们将从微服务架构和GraphQL的基础知识入手,逐步深入到如何利用现代工具和技术构建、容器化并部署我们的微服务。...如何构建GraphQL微服务在构建GraphQL微服务时,我们将遵循以下步骤:第1步:使用ServBay设置环境不同于传统的手动安装Node.js,ServBay提供了预配置的环境,包括各个版本的Node.js...Node.js安装部署指南第2步:初始化Apollo服务器Apollo Server是一个开源的、与GraphQL规范兼容的服务器,它简化了GraphQL API的构建。...服务器服务将使用提供的 Dockerfile 构建其映像,而数据库服务将使用官方 PostgreSQL 映像。此配置的一个重要方面是服务之间的依赖关系。

13700

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

从这个意义上说,它是数据库无关的, 而且可以在使用 API 的任何环境中有效使用,我们可以理解为 GraphQL 是基于 API 之上的一 层封装,目的是为了更好,更灵活的适用于业务的需求变化 GraphQL...比如:字段冗余,扩展性差、无法聚合 api、无法 定义数据类型、网络请求次数多 GraphQL 的出现整好弥补了 RESTful APi 的不足 使用 GraphQL 的公司 目前已经有很多的公司在使用...查询语言 GraphQL规范支持两种操作 query:获取数据(fetch)的只读请求 mutation:获取数据后还有写操作的请求 新版本的GraphQL还支持subscription,这是为了处理订阅更新这种比较复杂的实时数据更新场景而设计的操作...GraphQl 5.1 使用graphQl简单查询 安装 找到Vue中集成GraphQl的文档 https://github.com/vuejs/apollo https://vue-apollo.netlify.app...:h=>h(App) }) 简单查询 组件加载的时候就会去服务器请求数据,请求的数据会放在navList这个属性上面,在模板中可以直接使用当前属性 简单查询文档 带参数查询参考 import gql from'graphql-tag

5.1K42

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

阅读字数:6109 | 16分钟阅读 摘要 本次演讲主要介绍如何使用GraphQL,分别从前后端两个角度分析GraphQL的优劣势,对比Restful又能够给前后端协同开发带来哪些好处。...在使用GraphQLApollo之后,前端方面只需要全局定义一个URL,接下来就是定义每个Query需要取得的数据,根据页面定制接口数据。同时还可以做全局的异常处理,接口请求的合并。...如何安装轮子(前端) 接下来将讲一下我是如何安装轮子的,会涉及到一些面向场景的解耦操作,还有具体的代码演示。...如何使用轮子 工业控制设备(前端) 前面提到过我们的终端设备中还包含树莓派,这是一个工业控制设备,一般被放置在用户的厂房中,用来打印记录库房数据。...在使用Apollo的过程中我们也遇到了一些坑。

7.4K20

2017年 JavaScript 框架回顾 -- React生态系统

Flux React 作为一个完整的解决方案,其中一个尚未解决的问题就是应用程序的数据层部分。...当引入 React 时,Facebook 还推出了 Flux(一种管理应用程序中状态的方法)和 GraphQL(一种用于在客户端和服务器之间进行通信的系统)。这两者都不如 React 本身流行。...GraphQL GraphQL 与 React 是由 Facebook 同时开发的,但是这两者之间并没有内在的联系。GraphQL 是 Web 客户端查询服务器数据的一种方式。...GraphQL 通过名为 Relay 和 Apollo 的两个竞争库得到了普及,Relay 和 Apollo 提供了一个 Web 应用程序,用于生成 GraphQL 和管理数据流。...虽然 GraphQL 开发者使用量的绝对数还很小,但是 Apollo 的增长轨迹意味着 GraphQL 很值得开发者关注。

1.2K40

为 Vue 配置 GraphQL API

接前文为 Django 配备 GraphQL API,Django 提供 GraphQL 接口服务之后,我们需要让前端来消费这些接口数据,以 Vue 为例,看一看前端如何访问后端 GraphQL API...使用 Vue Apollo Vue Apollo[2] 是一个三方库,可以让你在 Vue 的应用中使用 GraphQL使用起来也很轻松,在上述 hello-world 目录下,也就是 package.json...同级的目录下,打开命令窗口执行: vue add apollo 这个命令会自动安装 npm 包:graphql graphql-tag @apollo/client。...可能遇到的问题 使用 Django API 最常见的问题就是跨域(CORS)问题,前端的错误提示可能是这样的: Access to XMLHttpRequest at 'url’' from origin...说明可能遇到了 django cors 错误,按照上面的方法解决即可。

1.2K20

GraphQL 基础实践

那么,上面的这个请求描述称为一个 GraphQL 请求体,请求体即用来描述你要从服务器上取什么数据用的。一般请求体由几个部分组成,从里到外了解一下。 首先是字段,字段请求的是一个数据单元。...类型系统、标量类型、空类型、参数 ?...通过上面的类型定义,可以看到 GraphQL 中的类型系统起到了很重要的角色。在本例中,Schema 定义了 name 为 String类型,那么你就不能传 Int类型进去,此时会抛出类型不符的错误。...会抛出错误。...接下来引用到我们中间件的handle配置中,完美,大功告成,用 ThinkJS 搭建的 GraphQL 服务器就此告一段落,npm start 运行起来之后,用 GraphiQL “播放”一下你的请求体

12.8K20
领券