由于业务需求的变化,需要使用 Graphql 作为客户端与服务端的交互查询框架,特此记录使用。
测试代码下载链接
一、导入引用以及规则示例
1、首先需要在我们需要使用的模块下面创建对应的src/main/graphql文件夹
2、将后台对应的服务生成的 xxx.graphqls 文件复制到该文件夹下, 此文件是后台服务生成的
3、配置模块下的依赖
其中有三处需要注意的地方
(1)在 plugins 中引用 (版本号根据实际使用调整)
id("com.apollographql.apollo3").version("3.8.0")
(2)dependencies 导入对应的库
implementation "com.apollographql.apollo3:apollo-runtime:3.8.0"
(3) 配置后续生成的文件的目录信息
apollo { service("service") { packageName.set("com.apollo.graphql") } }
其中packageName.set("xxxxxxx") 要与src/main/graphql文件夹下创建的文件夹名称相同,如图
4、此时rebuild项目 ,可以在 对应模块下面的 build/generated/source/apollo下面看到生成的文件
二、查询编辑
接下来可以根据 schema.graphqls 中的内容编写对应的查询语句等(如果后台在开发过程中使用了相关的功能,也可以问后台服务开发相关人员要),
1、在 packageName.set("xxxxxxx") 中 xxxx 对应的目录下创建 ***.graphql 文件,如下图
2、编写相关示例
schema.graphqls 对应的一个类型是查询(Query) 的 查询方法(queryEvents),查询的是 Event对象列表的事件
根据官方的文档介绍(百度搜),编写的查询语句如下
query Query{ queryEvents { id title description } }
其中 id title description 均是Event中的数据,可根据需要进行返回设置。
也可以编辑如下
全部数据都有:query Query{ queryEvents { id title description price date}}
部分数据(按需): query Query{ queryEvents { id title price }}
下图示例
文件的命名 QueryEvent.graphql 是要后缀是 .graphql 即可
重新rebuild后可以查看生成的文件
三、在代码中引用查询
示例如下,不分解说明
注意Query的目录,与我们设置的相同
四、补充说明
1、代码中有关于 Mutation 的定义
type Mutation { createEvent(eventInput: EventInput!): Event! }
相关的语句编辑如下
mutation MutationEvent($input: EventInput!) { createEvent(eventInput: $input) { id title } }
生成的数据结构如下
测试代码如下
2、android studio 别忘了引用对应的插件