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

GraphQL 实践与服务搭建

目标 本文将上手使用 GraphQL,并用 Nestjs 与 Strapi 这两个 Node 框架搭建 GraphQL 服务。...GraphQL​ REST API 构建在请求方法(method)端点(endpoint)之间的连接上,而 GraphQL API 被设计为只通过一个端点,即 /graphql,始终使用 POST...不仅需要在后端中配置 GraphQL 服务,用于接收 GraphQL 查询并验证执行,此外前端通常需要 GraphQL 客户端,来方便使用 GraphQL 获取数据,目前实用比较多的是Apollo Graph...,不过本文侧重搭建GraphQL 服务,因此前端暂不演示如何使用 GraphQL。...在上面一开始的例子中是 Code First 方式,通常使用该方式即可,无需关心 Schema 是如何生成的。下文也会以 Code First 方式来编写 GraphQL 服务。

5.2K10

2022 年10个优质的 Node.js CMS 平台分享

我们可以使用 「CMS」 来管理我们的内容交付。市面上有不同类型的 「CMS」,它们执行不同的目的并具有不同的功能。...「Strapi」 提供了 「REST」 GraphQL API」,开发人员可以使用这些 「API」 来访问存储在其存储库中的内容。...「Tina」 提供了一个 「GraphQL API」,我们可以使用它来查询获取我们的内容。还有一个 「Cloudinary」 包,我们可以用它来优化管理我们的媒体文件。...出于开发目的,它是完全免费的,但是一旦我们想要将项目推向生产,即使我们使用免费版本,我们也必须选择可用的许可证之一。...特点 REST GraphQL API 电子邮件功能 内容本地化 安全 三个计划中任何一个的可用功能都没有限制 网址: https://payloadcms.com/ 10.

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

MassCMS VS Strapi比较

Strapi CMS 是一个免费的开源无头 CMS,它使用 API 将前端链接到 Strapi 的后端,这是一个开源免费使用的产品,对于熟悉nodejs的人来说,它易于学习使用。...灵活性可定制性 Strapi 提供了一个灵活的框架,允许开发人员根据不同项目的需求进行定制扩展。它支持自定义数据结构、字段类型关系,并且允许开发人员使用自己喜欢的编程语言进行扩展。...REST & GraphQL API支持 Strapi 内置了一个强大的 RESTful API,开发人员可以使用它来创建和管理数据。...与传统 CMS 不同,无头 CMS 不关心如何呈现内容,而是专注于如何将内容提供给前端应用程序。这使得开发人员可以选择任何前端框架或技术栈来呈现内容,并使用无头 CMS 的 API 来获取管理内容。...3.同时支持APIJSON,GraphQL,RESTFUL API 一些简单的查询可以使用RESTFUL,一些复杂的查询使用 GraphQL,大部分的CMS支持GraphQL,或者支持RESTFUL,但是

60531

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

作者 | Khalil Stemmler 策划 | 田晓旭 在服务器上使用 GraphQL 代替 REST 是有很多好处的,使用 Apollo Client 取代自己编写的数据获取逻辑也有很多优势。...数据图从客户端延伸到服务器,并为现代 Web 应用程序中获取数据更改状态时面临的最常见基础架构问题提供了答案 为了通过 GraphQL 与后端服务通信,Apollo Client 公开了几种客户端方法...由于 GraphQL 语言是通行(ubiquitous)且标准化的,因此人类 机器 会更容易理解如何集成使用它。...基础架构组件并不是大多数 Web 开发项目的重心,因此我们应该将大部分时间用于应用程序域层代码。...前端开发人员可以使用数据图来创建自己的数据获取用例,而不必依赖后端开发人员。 GraphQL 消除了管理 API 版本的需要,Apollo 的 GraphManager 可以简化生产模式验证。

2.1K20

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

但当 Apollo Client 进入 2.0 版本,不再依赖于 Redux,如何去同步本地远端的数据,变得比原来更加棘手。...GraphQL 最大的一个优势在于,当给 GraphQL 语句中的字段加上合适的 GraphQL 指令后,单条 query 就可以从多个数据源中获取数据,无论本地还是远端。让我们来看看具体的方法。...Apollo Link 使得在 Apollo Client 中管理本地的数据成为可能,从一个 GraphQL 服务器中获取数据,可以使用 HttpLink,而从 Apollo 的缓存中请求数据,则需要使用一个新的...Resolvers 在使用 Apollo Client 管理应用状态后,Apollo cache 成为了应用的单一数据源,包括了本地远端的数据。那么我们应当如何查询更新缓存中的数据呢?...以上这段代码通过 @client 指令将数据修改限制在本地。 GraphQL 的一个很让人激动的功能是在单个 query 中向多个数据源请求数据。

2.3K100

防止你的GraphQL API被恶意查询

在这篇文章中,他描述了他们是如何在攻击中保护GraphQL API。 使用GraphQL,你可以随时查询想要的内容。 这对于使用API来说是惊人的,但也具有复杂的安全隐患。 ...如果我们只通过查询白名单,已经严重限制了他们的选择,并且破坏了拥有GraphQL API的重要性。 那些限制是我们无法使用的,所以我们得重新设计。...数量限制 上述查询的第二个有害方面是获取99999个对象。 无论这个对象是什么,取一吨它总是很耗时的。 ...(尽管DataLoader可能会缓解数据库压力,但网络处理压力不会) 我们没有将第一个参数的类型设置为Int(允许任意数量),而是使用graphql-input-number创建了一个自定义标量,该标量将最大值限制为...我们使用graphql-cost-analysis进行分析,因为我们最快的解析器(20μs)最慢的解析器(10s +)之间存在很大差异,所以我们需要从中获得控制。

1.8K10

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

在本指南中,我们将深入探讨如何利用ServBay一站式环境Docker,构建可扩展的GraphQL微服务。...我们将从微服务架构GraphQL的基础知识入手,逐步深入到如何利用现代工具技术构建、容器化并部署我们的微服务。...主要功能包括声明式数据获取使用 GraphQL,客户端可以在查询中精确指定所需的数据,包括字段关系。这消除了传统 REST API 经常出现的数据过度获取获取不足的问题。...如何构建GraphQL微服务在构建GraphQL微服务时,我们将遵循以下步骤:第1步:使用ServBay设置环境不同于传统的手动安装Node.js,ServBay提供了预配置的环境,包括各个版本的Node.js...使用 Docker(或任何其他容器化技术),您可以将每个微服务封装在其自己的容器中,从而提供高级别的隔离。每个容器作为一个独立的单元运行,具有自己的依赖运行时环境。此外,您可以轻松扩展微服务。

13200

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

在本指南中,我们将介绍如何GraphQL 无缝集成到您的 React.js 项目中。什么是 GraphQLGraphQL 是用于 API 的查询语言,也是用于执行那些查询的运行时。...与传统的 REST API 不同,传统的 REST API 由服务器确定响应结构,而 GraphQL 则使客户端能够定义其所需数据的形状结构。...在项目的 src 文件夹中创建一个名为 client.js 的文件,并设置 Apollo Client:// src/client.jsimport { ApolloClient, InMemoryCache...: new InMemoryCache(),});export default client;在 React 组件中使用 GraphQL 获取数据现在,让我们使用 GraphQL 在 React 组件中获取数据...这只是一个起点,随着您的应用程序的发展,您现在可以探索更高级的功能,如 mutations、subscriptions 使用 Apollo Client 进行缓存。

32640

使用 strapi 快速构建 API CMS 管理系统

安装 strapi 直接使用官方提供的快速开始的模版,这里我使用 TypeScript 的模版,命令如下: npx create-strapi-app@latest my-api --quickstart...修改 strapi 管理界面为中文 接下来我们进行项目代码的配置,将界面设置为中文,使用自己熟悉的开发工具打开工程,这里我使用 VSCode,项目的结构如下图所示: 这里我使用了文件折叠的插件,才让下面那些配置文件显示成层级结构的...对外暴露接口 接下来我们对外暴露接口,让我们自己编写的前端用户使用,找到 设置 -> 角色列表 -> Public,进行编辑,将 find findOne 接口勾选,然后点击 保存,进行勾选的时候,...我们复制到浏览器上使用一下,拼接上域名端口 http://localhost:1337/api/user-profiles 可以看到接口已经返回了 json 数据,我们添加到 CMS 当中的内容已经成功返回...filters[username]=xiao strapi 也提供非常丰富的插件,比如要使用 GraphQL,直接安装 GraphQL 插件即可。

5.7K31

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

前端设置(使用Apollo Client)接着,我们需要在前端应用中配置Apollo Client,与我们的GraphQL服务器通信:npm install apollo-boost @apollo/client...编写前端组件现在,我们在React组件中使用Apollo Client执行查询变更:// App.jsimport React from 'react';import { gql, useQuery,...下面展示如何使用一个自定义的@auth指令来控制访问权限。首先,假设我们定义了一个@auth指令,用于限制对某些字段的访问,要求用户必须登录。...GraphQL 高级应用1. 分页使用GraphQL Cursor-based分页,以提高性能用户体验。...更好的API设计:强类型系统确保了数据的一致性正确性,使得API更加易于理解维护。客户端控制:客户端可以决定获取多少数据,何时获取,提高了用户体验。

6110

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

阅读字数:6109 | 16分钟阅读 摘要 本次演讲主要介绍如何使用GraphQL,分别从前后端两个角度分析GraphQL的优劣势,对比Restful又能够给前后端协同开发带来哪些好处。...在使用GraphQLApollo之后,前端方面只需要全局定义一个URL,接下来就是定义每个Query需要取得的数据,根据页面定制接口数据。同时还可以做全局的异常处理,接口请求的合并。...在结合GraphQLApollo的情况下我们的鉴权方案主要依赖于AppAsyncStorageweb localStorage这两个数据可持久化的方案。...在使用Apollo的过程中我们也遇到了一些坑。...请求频率限制上既要防止恶意刷请求也要实现基于IPUserID的限制。 安装工人的心得 这里的标题是安装工人的心得,其实指的就是我个人在使用GraphQL过程的一些感悟总结。

7.3K20

GraphQL到底怎么使?看看智联前端团队技术沉淀

这里的服务端不仅指网络服务,用 GraphQL 作为中间层数据引擎提供本地数据的获取也是可行的,GraphQL 规范并没有对数据源获取方式加以限制。...跑起来的 Schema 现在 Document Schema 结构对应上了,那么数据如何来呢?...几乎是 Apollo GraphQL: Apollo 提供的实现 GraphQL 生态,内容丰富,不止一套引擎,还提供了纯客户端使用(不局限JavaScript)多种工具。...Apollo Apollo 提供了完整的 GraphQL Node.js 服务框架,但是为了更直观的感受可执行 Schema 的创建过程,使用 Apollo 提供的 graphql-tools 进行可执行...上手快;apollo 实现则使用结构行为分离的方式定义,且使用了 SDL,结构行为使用类名形成对应关系,有一定的理解成本,好处是 Schema 结构更直观,且使用 SDL 定义 Schema 更快。

2.3K20

【Rust日报】2021-11-14 一个开源的基于RustFlutter的Notion替代产品

一个开源的基于RustFlutter的Notion替代产品 @annieanqi 开源了一个基于 Rust Flutter 的 Notion 替代产品 appflowy,目前是MVP状态,该项目还处于一个比较早的状态...从 2020-08-05 到 2021-11-11,编译器基准套件的结果有 459 改进,只有 18 回归,如下面(很长)的屏幕截图所示,因为截图过长印象阅读体验,请移步原文查看。...阅读原文: https://www.apollographql.com/blog/announcement/backend/apollo-router-our-graphql-federation-runtime-in-rust...主要工作是,阅读官方文档,把寄存器信息整理到svd文件中,以供后续嵌入式rust使用。欢迎大家关注项目!如果您愿意为w806-pac项目做出贡献,请打开项目主页的issues,来查看详细的信息。...感谢各位对项目的支持!

81130

2017JavaScript框架战报-React分战场

React不需要为更简单的应用程序使用路由,有时用在桌面移动应用程序等环境中,路由也并不是必需的。...React的一部分:通过将自己限制在一个明确定义的问题领域内,并具有明确定义的接口,使其本身可以应用于比原始设计更广泛的应用范围。...推出React的同时,Facebook还推出了FluxGraphQL。两者都不如React流行,这再次显示了React在一小部分问题上的解决问题能力。...虽然rx版本目前正在下滑,而rxjs正在上升,但两者都得有大量使用率。 RxJS似乎是作为其他项目的子依赖驱动的,特别是Angular CLI。...它通过名为RelayApollo的两个竞争库得到了一定的普及,这两个库提供用于生成GraphQL管理数据流的Web应用程序。

1K70

Headless CMS是什么?

Headless CMS的工作原理是,通过提供API(通常是RESTful或GraphQL或APIJSON)来让开发者获取管理内容,而不是通过特定的模板页面来展示内容。...这就是无头CMS 的目的使用 API 优先方法,无头 CMS 与任何特定的显示层分离。 Headless CMS的关键特性 1.无头模式:这是Headless CMS的主要特点。...通过无头CMS的API,开发人员可以方便地获取管理这些资产,实现在不同平台上的展示应用。 有哪些优秀的无头CMS Contentful:Contentful是一款功能强大且易于使用的无头CMS。...它提供了丰富的API开发工具,可以让开发人员快速构建和管理内容。 StrapiStrapi是一个开源的无头CMS框架,它具有灵活的数据模型和丰富的插件生态系统,可以满足各种不同的项目需求。...GraphCMS:GraphCMS是一个GraphQL首选的无头CMS,它允许您使用GraphQL查询管理内容。它提供了一个直观的界面强大的工具,适用于开发人员非开发人员。

88131

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

1 REST 的缺点 作者指出了 REST API 的一系列缺点,以及 GraphQL 如何克服所有这些缺点: 过度获取; 多个请求请求多项资源; 针对嵌套数据的瀑布式网络请求; 每个客户端都需要知道每个服务的位置...与使用 Next.JS 的 BFF 方法相比,在前端获得相同的结果会更复杂。如何使用 GraphQL 实现 Etags?如果没有任何变化,如何使 GraphQL 服务器返回 304 状态码?...但是,GraphQL 模式是如何保证的呢? GraphQL 内省是向服务器发送一个特定的 GraphQL 查询以获取关于 GraphQL 模式的信息。...在这种情况下,GraphQL REST 之间没有区别。对于 REST GraphQL API 来说,支持遗留应用都是一挑战。你需要找到一种方法,不能破坏客户端和服务器端之间的契约。...使用 GraphQL,解析部分数据的逻辑位于服务器中。客户端需要有额外的逻辑对部分响应做相应的处理。 使用 REST,获取部分数据的逻辑位于客户端或 BFF 中。

2K10

如何在纯 JavaScript 中使用 GraphQL

但是,如果你需要使用一个 GraphQL API,你很自然就会想到自己需要使用 React / 或其他一些库才能让它跑起来。...显然,一般来说你不会想要简单地向用户显示查询结果,因此让我们看一下如何使用返回的数据。 使用 GraphQL 查询响应 GraphQL 的一大优点是,它的响应只是纯 JSON,因此数据使用起来很容易。...接下来可以做什么 这里的目标不是让大家不要使用 GraphQL 客户端库来执行 GraphQL 查询。那些库提供的能力远远超过了我在这里讨论的简单功能。...但是,对于研究 GraphQL 的人们来说(尤其是将其与 REST 对比时),很重要的一点是使用 GraphQL 显然不需要任何外部依赖。...Brian 加入软件开发行业已超过 20 年,主要研究 Web 前端后端技术。 延伸阅读 https://stepzen.com/blog/consume-graphql-in-javascript

3.5K10

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

最近,我有机会为自己的项目客户开发运行一些使用 GraphQL API 构建的移动 Web 应用程序。这真是一个很好的体验,尤其要感谢令人惊叹的 PostGraphile Apollo。...分页过滤并不简单 大多数 API 都使用对象集合。在待办事项列表应用中,列表本身就是一个集合。大多数集合都可以包含 100 多个。...另一任务是在客户端代码中使用这些端点。如果有的话,最好使用代码生成,但是它似乎不够灵活。...要了解这些工具是如何工作的,请查看 Star Wars API 示例,它可以作为 GraphiQL 的在线演示。 能指定从服务器请求的对象字段让客户端可以根据需要只获取需要的数据。...另外值得一提的两个 GraphQL 库是 PostGraphile Apollo

2.3K30
领券