用各种不同角度观察GraphQL

这篇文章是GraphQL Advent Calendar 2020的第17天的文章。
上一篇文章是@Quramy的《使用GraphQL的增量数据传递:利用defer和stream》。

这篇文章的经过

我记得我第一次接触到 GraphQL 这个词大概是在2017年左右。

对于当时的GraphQL知识,我认为它更像是一种用于 NoSQL 数据获取的查询方式,而不仅仅是API的接口。 (可能我当时只是通过浏览一些文章来学习,所以了解不够深入)

进入2020年以来,在各种背景下越来越多地听到GraphQL这个词,我开始想,如果现在开始使用GraphQL呢?于是我考虑整理一些实践经验。

从你的角度来看一下 GraphQL 的潜力,为什么不从今天开始尝试使用 GraphQL 呢?

使用React.js的工程师对GraphQL的观点

React.js是当前前端技术的标准之一。
如果要在React.js中使用GraphQL,
通过使用Apollo Client可以极大地提高便利性!

如果连接的 API 可以通过 GraphQL 进行通信,
只需几行代码即可实现请求。

此外,Apollo Client的缓存机制非常强大,
可以像Redux Store一样,无需关注数据的来源是内存还是外部资源,
作为状态管理进行使用。

你是否开始有点在意了呢?让我们明确地编写一些代码吧,快来试试看!请点击此链接:https://www.apollographql.com/docs/react/get-started/

从开发后端的工程师角度来看,GraphQL是这样的。

GraphQL 在几乎所有的编程语言中得到支持,甚至包括您今天所写的语言。
https://graphql.org/code/

如果使用NoSQL来设计数据库,并且返回JSON作为某个键的结果,那么GraphQL也可以派上用场。

并且最重要的是,将由graphql-code-generator创建的接口传递给客户端开发人员,通过遵循该形式进行开发,可以比使用Swagger更快地进行基于模式的开发。

如果有Node.js的选择,我个人推荐NestJS。这是一个采用现代技术栈的框架,当然也支持GraphQL。

中国工程师视角下对于使用 AWS 的 GraphQL

在AWS的环境下,一提到GraphQL就是指AppSync。
这是AWS的一项专门面向GraphQL的服务,
可以在几乎不考虑后端的情况下进行开发,非常方便。
最近我个人觉得学习GraphQL有意义是因为可以使用这个服务。
能够实现双向通信的WebSocket实现以及认证等,都可以通过AppSync一次性实现,非常棒。

请尝试从公式文档的快速入门开始。
https://docs.aws.amazon.com/zh_cn/appsync/latest/devguide/quickstart.html

从架构师的角度来看GraphQL。

当设计微服务时,我认为架构驱动开发是一个非常吸引人的选项。我感觉它的架构定义不如 gRPC 那样严格,也没有 Rest API 那么宽松。

不同的组件会导致分页查询不同?让我们在GraphQL中统一处理吧。

在Facebook上使用开放源代码软件(OSS),有助于保留维护期限内仍需维护的部分。

虽然存在与现有的 Rest API 难以混合的问题,但也开发了一种名为 GraphQL Mesh 的网状服务。

总结

现在,GraphQL已经随处存在于Web开发中。

现在,即使不改变正在开发的架构,也可以开始使用React.js单独或AWS客户端单独来使用GraphQL。

虽然目前在日本,仍然很少有团队采用此开发技术,但我认为未来使用情况将会增加并变得更加方便。

让我们尝试一下使用 GraphQL 吧!

广告
将在 10 秒后关闭
bannerAds