什么是 GraphQL?

2023年3月7日

💎 加入 E+ 成長計畫 與超過 300+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源

GraphQL 简介

GraphQL 是一种用于 API 的查询语言。它由 Facebook 于 2015 年开发,并在 2018 年开源。 GraphQL 使客户端可以精确地请求它们需要的数据,并且能够减少不必要的数据传输。与传统的 REST API 不同,GraphQL 使用单个端点来提供所有请求的数据,客户端可以使用 GraphQL 查询语言来描述需要的数据,这使得查询更加灵活和可控。

延伸阅读

Client-Server 流程

Client-Server 流程
Client-Server 流程

如上图所示,Client 在传送 QraphQL 的 query 时,并非为真的 JSON 格式,而是一个字串;而 Server 收到字串后会去验证其 query 的有效性,并和资料库或许相对应的资料传回给 Client。

GraphQL API Call
GraphQL API Call
圖片來源:https://hasura.io/learn/graphql/intro-graphql/graphql-vs-rest/

从上面动画就可以发现,使用 GraphQL 就可以轻易的获取想要的栏位与资料,也能清楚知道哪个 Client 获取了哪些资料回去使用。

GraphQL 优缺点比较

优点

  • 精准获取数据:GraphQL 允许客户端可以精确地获取它们需要的数据,而无需获取整个资源。
  • 减少网络传输:由于客户端只需要发出一次请求,就可以获取多个资源的数据,因此可以减少网络传输次数,从而提高性能和速度。
  • 灵活性和可扩展性:GraphQL 具有灵活的查询语言,使得客户端可以轻松地查询它们需要的数据,并可以轻松地添加新的查询字段和数据类型。
  • 类型系统:GraphQL 具有强大的类型系统,使得客户端和服务器端能够更好地理解 API 的数据结构,并减少错误发生的概率。
  • 缓存:GraphQL 查询具有标准化的结构,这意味着客户端可以使用缓存来避免不必要的网络请求。
  • 前后端独立:GraphQL 允许前端和后端团队独立开发,因为客户端可以根据需要查询所需数据,而无需与后端团队进行过多的沟通。

缺点

  • 学习曲线:相对于 REST API,GraphQL 对于前端和后端开发人员都需要较长的学习曲线。这是因为 GraphQL 涉及到复杂的类型系统、查询语言和执行机制等概念。
  • 复杂性:GraphQL 的灵活性和可扩展性是它的优点,但也使得它更加复杂。对于简单的 API,GraphQL 可能是一种过度的解决方案,因为它需要开发人员投入更多的精力来设计、实现和维护它。
  • 性能:虽然 GraphQL 可以减少网络传输,但它也可能导致性能问题。这是因为 GraphQL 查询语句中可能包含大量嵌套的字段和复杂的查询,这可能会导致查询执行时间较长,从而影响 API 的响应时间。
  • 安全性:与 REST API 不同,GraphQL API 允许客户端查询需要的任何数据。这可能会导致安全漏洞,如数据泄露和暴露 API 的敏感信息。因此,需要采取措施来确保 GraphQL API 的安全性,如鉴权和授权等。

相关文章

🧵 如果你想收到最即時的內容更新,可以在 FacebookInstagram 上追蹤我們