为什么你应该尝试 GraphQL?
由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!
GraphQL 于 2012 年在 Facebook 内部开发,并于 2015 年开源。2018 年,该项目被移交给新成立的 GraphQL 基金会,该基金会由 Linux 基金会托管。GraphQL 的创建者 Lee Byron 曾表示,他的目标是让 GraphQL 在所有 Web 平台上普及。让我们来看看这个目标有多大可能实现。
一点理论
GraphQL 是一种用于 API 的查询语言,其主要优势在于允许客户端精确定义所需的数据类型。开发者创建一个模式(schema),其中包含客户端可以通过服务查询的所有数据。该模式包含对象类型,用于确定可以请求的对象及其类型。所有查询都会基于该模式进行验证,验证通过后才会执行。模式中的每个字段都关联到一个称为解析器(resolver)的函数,该函数会在执行查询时被调用以生成相应的值。
稍微练习一下
让我们通过一个简单的例子,比如论坛、博客或社交媒体,来了解它的实际工作原理。假设用户有四个属性:用户名、邮箱、位置和 ID,并且可以创建带标题的帖子。现在,如果您需要创建一个只显示用户名和 ID 的个人资料组件,则不需要用户的邮箱和位置。在 REST 和其他 Web 服务架构中,API 会返回所有用户数据,您无法在不获取不必要数据的情况下请求所需的特定数据。这听起来似乎不是什么大问题?看看 Facebook 账户及其包含的变量数量,您就能很容易地理解他们为什么开始开发 GraphQL 了。
GraphQL 允许您精确请求所需的参数,API 只会返回您请求的数据。它通过一个统一的端点处理所有客户端请求。以上只是一个基本查询。GraphQL 的优势之一是能够嵌套查询,因此可以扩展到获取多个变量。
让我们回到前面提到的博客/论坛/社交媒体 API 的例子。如果你的个人资料组件需要更复杂一些呢?我们可以创建一个查询,请求一些基本的用户信息以及该用户的帖子标题,这样个人资料就能展现用户的活跃度和基本信息。
为什么开发团队要采用 GraphQL?
其中一项针对多家拥有 GraphQL 使用经验的公司的调查询问了他们的首席技术官和首席开发人员,他们为什么决定转向 GraphQL。该调查列出了六大主要优势(开发速度、模块化、可扩展性、性能、可靠性、安全性),并询问受访者对以下陈述的同意/不同意程度:
-
我们使用 GraphQL 加快了开发速度。
-
借助 GraphQL,我们能够更快地扩展项目规模。
-
统一我们的 API(例如,微服务、传统端点、第三方服务等)变得更加容易。
-
使用 GraphQL 后性能有所提升
-
我们的架构更加稳定,停机时间更短,错误也更少。
结果如下:
来源:Novvum @medium
来源:Novvum @medium
调查结果的解读总结如下表所示。最重要的结论是,GraphQL 成功地满足了小型、中型以及大型企业团队的需求。
| 团队规模 | 他们想要达成的目标 | 他们取得的成就 |
|---|---|---|
| 50-100 和 100+ 开发人员 | 更快的开发速度、更好的可扩展性、更好的模块化 | 更快的开发速度,更好的可扩展性 |
| 10-50名开发人员 | 更好的模块化设计,更高的性能 | 发展速度更快,基础设施更完善 |
| 最多 10 位开发者 | 更快的开发速度,更好的模块化设计 | 更快的开发速度,更好的可扩展性 |
简单灵活
GraphQL 不仅简单易用,而且适应性极强。GraphQL 是客户端驱动的,其创建者强调他们关注的是客户端的需求,而不是服务器的需求。正因如此,GraphQL 才如此灵活,尽可能方便客户端使用。您可以将 GraphQL 与以下应用场景结合使用:
- Python,
- React
- Java,
- C++,
- PHP,
以及其他一些应用,因为它旨在成为一种通用解决方案,无论服务、平台或编程语言如何,都能检索数据。它能否在所有平台上得到广泛应用?时间会给出答案,但它无疑具备实现这一目标所需的一切条件。
Michal Tyszkiewicz为GraphQL 编辑器博客撰写的客座博文
加快您的 GraphQL API 开发速度
GraphQL Editor是一款强大的辅助工具,无论您是 GraphQL 高级用户还是 GraphQL API 初学者,都能轻松上手。我们的一体化 GraphQL 开发环境将帮助您更快地构建、管理和部署 GraphQL API。立即免费试用 GraphQL Editor!
文章来源:https://dev.to/graphqleditor/why-you-should-try-graphql-4197




