目前只支持 Growing CDP 平台
- Scala 2.11.x、2.12.x、2.13.x
- Java 1.7+
- maven
//这里使用的是2.12
<dependency>
<groupId>io.growing</groupId>
<artifactId>growingio-graphql-javasdk_2.12</artifactId>
<version>0.0.1</version>
</dependency>
- gradle
//这里使用的是2.12
compile group: 'io.growing', name: 'growingio-graphql-javasdk_2.12', version: '0.0.1'
- sbt
libraryDependencies += "io.growing" %% "growingio-graphql-javasdk" % "0.0.1"
具体可以参考 javasdk-examples,这是使用Gradle+Java构建的示例项目。
- 1.使用
api
的GrowingioApi.scala
类中已经封装好的API,如定义:
def submitTagUserExportJob(tagId: String, properties: util.List[String], charset: String, detailExport: Boolean): TagUserExportJobDto = {
val resolver = new $SubmitTagUserExportJobMutationResolver(conf)
resolver.submitTagUserExportJob(tagId, properties, charset, detailExport)
}
def submitSegmentUserExportJob(projectId: String, segmentId: String, tags: util.List[String], properties: util.List[String], charset: String): SegmentUserExportJobDto = {
val resolver = new $SubmitSegmentUserExportJobMutationResolver(conf)
resolver.submitSegmentUserExportJob(projectId, segmentId, tags, properties, charset)
}
def jobResult(id: String): JobResultDto = {
val resolver = new $JobResultQueryResolver(conf)
resolver.jobResult(id)
}
def userProfile(projectId: String, userId: String, tags: util.List[String], properties: util.List[String]): UserProfileDto = {
val resolver = new $UserProfileQueryResolver(conf)
resolver.userProfile(projectId, userId, tags, properties)
}
def tags(projectId: String): util.List[TagDto] = {
val resolver = new $TagsQueryResolver(conf)
resolver.tags(projectId)
}
def segments(projectId: String): util.List[SegmentDto] = {
val resolver = new $SegmentsQueryResolver(conf)
resolver.segments(projectId)
}
- 2.Java中调用
tags
获取所有标签列表:
final static GrowingioApi growingioApi = GrowingioApi.apply("http://gdp-dev.growingio.com/graphql", "Cookie", "xxxx");
public static void main(String[] args) {
List<TagDto> tags = growingioApi.tags("projectId");
System.out.println(tags);
}
- 类似gRPC的client,每个graphql接口都提供一个resolver接口以及默认实现,如Mutation操作
submitTagUserExportJob
接口的resolver是SubmitTagUserExportJobMutationResolver
SubmitTagUserExportJobMutationResolver
的默认实现是$SubmitTagUserExportJobMutationResolver
- Query操作
tags
接口的resolver是TagsQueryResolver
TagsQueryResolver
的默认实现是$TagsQueryResolver
一般情况下,直接使用$XXQuery、$XXMutation即可。如需要自己实现resolver,可参考内置的$XXX的的代码。
可以参考GrowingioApi
,比如想使用batchDeleteItemVariables
接口:
- 先找到它的默认resolver实现,全局搜索即可:
$BatchDeleteItemVariablesMutationResolver
; - 构造它的实例,
$BatchDeleteItemVariablesMutationResolver resolver = new $BatchDeleteItemVariablesMutationResolver(GrowingioApi.apply("服务地址", "可选的鉴权key", "可选的鉴权value"))
; - 然后我们就可以直接使用了,
resolver.batchDeleteItemVariables("传入你的参数")
。
可以使用GrowingioApi
的其他构造函数:
Map<String, String> myHeaders = new HashMap<>();
myHeaders.put("Cookie", "my cookie");
myHeaders.put("token", "my token");
myHeaders.put("other key", "other value");
final GrowingioApi newGrowingioApi = GrowingioApi.apply("http://gdp-dev.growingio.com/graphql", myHeaders);
List<TagDto> newTags = newGrowingioApi.tags();
System.out.println(newTags);
cdp获取token命令如下
curl --location --request POST 'http://uat-gdp.growingio.com/accounts/oauth/access_token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=api' \
--data-urlencode 'client_secret=API密钥' \
--data-urlencode 'scope=system'
本SDK没有像示例一样封装每个API,但为了方便,使用者可以参考
GrowingioApi
自己封装一下。
使用者忽略
- 依赖
growing-cdp
项目的原始schema文件(resources
目录),增加接口前保证最新schema已经landresources
目录是:Path.userHome / "project" / "growing-cdp" / "src/main/resources"
- 保证
growing-cdp
处于正确的git分支,因为依赖的原始schema文件是当前growing-cdp
正在使用的git分支中的
- 更新schema后,重新执行
GraphqlSchemaMergeApp.scala
,该程序会合并schema,生成all.graphqls
文件(因为growing-cdp
的schema非标准写法) - 执行
sbt graphqlCodegen compile
生成Java客户端和API- 根据需要新增配置项,参考:options
- 生成接口后,在
api
包中实现接口中新增的方法(本SDK将目前常用的接口封装在:GrowingioApi.scala
)- 建议为复杂接口写一些使用示例和单测。
- 正式发布
sbt release
排除graphql schema- 发布到本地maven仓库,
sbt publishM2
未排除graphql schema
- 发布到本地maven仓库,
- 不支持在单个请求中支持多个查询