GraphQL的GraphQL Java Tools概述

GraphQL Java Tools是一个软件包,能够从GraphQL的模式定义*.graphqls文件构建出对应的Java的POJO类型对象。

GraphQL Java Tools的最新版本是2017.11发布的4.3.0。

1. GraphQL Java Tools的项目名称为graphql-java-servlet,其本身依赖如下软件模块:

  • com.graphql-java:graphql-java:6.0
  • com.fasterxml.jackson.core:jackson-*:2.8.8
2. GraphQL Java Tools的工作模型

*.graphqls文件 <-> POJO类型对象 <-> Resolvers对象 <-> data Repository对象

3. GraphQL Java Tools提供了多种Resolvers的接口,用以为POJO类型对象填充数据

1)三个Root Resolvers(都继承自GraphQLResolver)
  • GraphQLQueryResolver
  • GraphQLMutationResolver
  • GraphQLSubscriptionResolver

2)此外,任何引用其他POJO类型的POJO类型对象,其Resolvers类的定义都继承自GraphQLResolver。

所有的Resolvers对象,在SchemaParser生成GraphQLSchema时,都要以参数的形式提供给.resolvers(...)方法。

4. GraphQL Java Tools能够为POJO对象中的fields自动关联到Resolvers的方法,开发工作如下:

1)在*.graphqls文件中给出新fields(即在POJO类型对象中出现该fields),详情参看GraphQL规范,此处略。

2)在Resolvers类中给出对应的fields访问方法,方法命名如下(任选其一):

  • <fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
  • is<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
  • get<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])
  • getField<Fieldname>(dataRepositoryClassInstance, *fieldArgs [, DataFetchingEnvironment])

其中,DataFetchingEnvironment都是可选的。

3)在dataRepository类中给出对应的数据访问方法,方法命名如下(任选其一):

  • <fieldname>(*fieldArgs [, DataFetchingEnvironment])
  • is<Fieldname>(*fieldArgs [, DataFetchingEnvironment])
  • get<Fieldname>(*fieldArgs [, DataFetchingEnvironment])
  • getField<Fieldname>(*fieldArgs [, DataFetchingEnvironment])

其中,DataFetchingEnvironment都是可选的。

5. 在Maven项目中引用GraphQL Java Tools,在pom.xml中引用如下:

<dependency>
    <groupId>com.graphql-java</groupId>
    <artifactId>graphql-java-tools</artifactId>
    <version>4.3.0</version>
</dependency>

参考链接:

https://github.com/graphql-java/graphql-java-tools

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
graphql-java 是 GraphQLJava 实现。这个库的目标是用于真实的生产环境。graphql-java 解析和执行查询 GraphQL 。它并不真正获取任何数据的:数据来源于执行回调或提供静态数据。graphql-java 的 "hello world":import graphql.schema.GraphQLObjectType; import graphql.schema.GraphQLSchema; import static graphql.Scalars.GraphQLString; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; public class HelloWorld {     public static void main(String[] args) {         GraphQLObjectType queryType = newObject()                         .name("helloWorldQuery")                         .field(newFieldDefinition()                                 .type(GraphQLString)                                 .name("hello")                                 .staticValue("world")                                 .build())                         .build();         GraphQLSchema schema = GraphQLSchema.newSchema()                         .query(queryType)                         .build();         Map result = new GraphQL(schema).execute("{hello}").getData();         System.out.println(result);         // Prints: {hello=world}     } } 标签:graphql

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值