GraphQL:干掉RESTful?还差点意思

冰岩作坊 April 16, 2023

本文介绍了GraphQL,它是一种用于API的查询语言,有着精确获取所需数据、提高查询效率等优点。但GraphQL也存在一些问题,如生态不足、性能优化困难等。

什么是 GraphQL

GraphQL(Graph Query Language,GQL) 既是一种用于 API 的查询语言,可以对你的 API 中的数据提供一套易于理解的完整描述,使得客户端能够准确地获得它需要的数据,而且没有任何冗余,也让 API 更容易地随着时间推移而演进,还能用于构建强大的开发者工具。

举个例子?

在 GraphQL 中请求数据十分简单,只需要找到你需要的字段并把它加进请求中,比如:

1
}---Result  }}

也可以给这个查询取个名字,这不会影响你获取到的结果,比如:

1
query GetAppInfo }

而在对数据进行增加修改等操作时,我们一般使用 mutation:

1
mutation AddUser ) }---Result  }}

借助强大的开发工具,你甚至不需要知道具体的编写规则,只要动动手勾选你要的数据,请求就已经为你编写好了!

而对于服务端,我们只需要定义对象和类型,再为对应的字段编写函数获取数据就OK了!

有什么优点?

高级用法

一些缺点

总结

GraphQL 很炫酷,也可以在某些特定的场景脱颖而出,但也存在一些生态和实践上的问题。许多介绍它的文章号称轻松干掉 RESTful,我个人看来还是差点意思。目前它或许更适合用在一些后台管理、低代码等不太复杂的项目。

Reference

  1. https://graphql.org/

  2. https://zhuanlan.zhihu.com/p/157314533

  3. https://www.zhihu.com/question/38596306

  4. https://mp.weixin.qq.com/s/dG2o4BSklopEaLgvokYLwQ

  5. https://www.apollographql.com/docs/federation