GraphQL 是一种 API 查询语言, 简单来说就是一种描述客户端如何向服务器端请求数据的 API 语法,和 RESTful 规范类似。
GraphQL 规范由 Facebook 在2015年开源,设计初衷是想要用类似图的方式表示数据,即不像在 RESTful 中,数据被各个 API endpoint 所分割,而是有关联和层次结构的被组织在一起,更多相关知识可以去 GraphQL 官网 了解。
介绍
GraphQL 只是一种规范,还需要有具体的语言库来实现这种规范,就像 FastJson 实现了 JSON 规范一样,GraphQL 在java中的一种实现是 graphql-java,更多语言对 GraphQL 的支持可以 看这里。
简单使用
引入maven依赖
客户端使用
基本处理流程图如下
想了解更多关于定义schema的介绍,可以查看 官方文档-Queries and Mutations 。
引入maven依赖
Guava不是必需的,这是使用Guava来简化我们的代码,graphql-java-spring-boot-starter-webmvc 自动装配GraphQLController
这是一个统一处理的Controller,源码如下
在这个基础上我们只需要定义 schema 和实例化 GraphQL 对象就可以了,具体流程可以参考 Getting started with GraphQL Java and Spring Boot。
定义schema文件
文件 schema.graphqls
定义DataFetcher
DataFetcher表示当执行查询脚本时,获取某一个属性的数据所对应的业务处理,复杂的业务逻辑就在这块,这里我们使用静态数据来模拟,真实环境应该查询数据库来获取数据。
解析schema并创建GraphQL
使用Postman客户端请求数据
最终请求的 content-type 还是 application/json,postman只是将数据做了一下转换,
到了服务器,数据就变成了
leetcode答题网站中就大量使用到了 GraphQL 这种请求方式,
GraphQL文档官网
Getting started with GraphQL Java and Spring Boot
GraphQL java工程化实践
graphQl + SpringBoot 入门
Spring GraphQL成为Spring顶级项目,将发布第一个里程碑版本
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/9589.html