3分钟了解GraphQL

1,025 阅读1分钟

GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。

一个 GraphQL 服务运行起来(通常在 web 服务的一个 URL 上),它就能接收 GraphQL 查询,并验证和执行。接收到的查询首先会被检查确保它只引用了已定义的类型和字段,然后运行指定的解析函数来生成结果。

我们以一个非常简单的查询以及其结果为例:

当我们想要查询hero对象的姓名这个属性的时候只需要在查询把对象结构通过JSON关系表示出来,后台就能反馈给我们需要的数据。查询和其结果拥有几乎一样的结构。这是 GraphQL 最重要的特性,因为这样一来,你就总是能得到你想要的数据,而服务器也准确地知道客户端请求的字段。 上述查询是可交互的。也就是你可以按你喜欢来改变查询,然后看看新的结果。

新技术的产生必定伴随着旧问题的解决,之前的开发过程中遇到过这样的一种问题:以Spring-Data-JPA对象化查询,当需要查询相互关联的对象中的某几个属性的时候,没法很好的控制,只能把所有的属性全部查询出来,并且查询到到的数据结构需要经过进一步的加工才能得到自己需要的数据结构。