标签:Java 入门 对象 RuntimeWiring Graphql import graphql hello schema
Graphql-Java简介
GraphQL 是 Facebook 发明和提出的一种查询数据的方式,即一种API方式,Graphql-Java则是这种方式的Java实现。本教程的graphql-java版本是version: v15。JAVA哥哥教程
从HelloWorld开始
依赖包
本实例是通过maven方式导入依赖包
<dependency>
<groupId>com.graphql-java</groupId>
<artifactId>graphql-java</artifactId>
<version>15.0</version>
</dependency>
示例代码
package com.javagege;
import graphql.ExecutionResult;
import graphql.GraphQL;
import graphql.schema.GraphQLSchema;
import graphql.schema.StaticDataFetcher;
import graphql.schema.idl.RuntimeWiring;
import graphql.schema.idl.SchemaGenerator;
import graphql.schema.idl.SchemaParser;
import graphql.schema.idl.TypeDefinitionRegistry;
public class HelloWorld {
public static void main(String[] args) {
//这里是定义schema 的字符串,定义了一个名为hello的查询,返回的数据类型是String
//schema除了直接通过String字符串定义之外,还可以通过SDL文件(后缀为*.graphqls的文件)或编码的方式定义。
String schema = "type Query{hello: String}";
SchemaParser schemaParser = new SchemaParser();
TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema);
//实例化一个RuntimeWiring对象,这个对象中关联了一个DataFetcher对象,DataFetcher对象是用来获取数据的,获取数据的方式需要开发人员根据实际情况实现,它只关心返回结果
//这里是将名为hello的查询关联到一个简单的StaticDataFetcher对象,它返回一个字符串"world"
RuntimeWiring runtimeWiring = RuntimeWiring.newRuntimeWiring()
.type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("world")))
.build();
SchemaGenerator schemaGenerator = new SchemaGenerator();
//将schema定义与RuntimeWiring绑定,生产可执行的schema
GraphQLSchema graphQLSchema = schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);
GraphQL build = GraphQL.newGraphQL(graphQLSchema).build();
//执行hello查询
ExecutionResult executionResult = build.execute("{hello}");
//输出查询结果,结果为{hello=world},默认是Map格式的数据
System.out.println(executionResult.getData().toString());
}
}
示例中的关键点
- 有schema定义信息,其中定义了方法名称、输入数据、返回数据等等结构信息。
- 有一个RuntimeWiring对象,RuntimeWiring对象中关联了相关DataFetcher对象。
- schema定义信息与RuntimeWiring对象绑定,生成一个可执行的GraphQLSchema对象。
- 通过GraphQLSchema对象,实例化一个GraphQL对象,通过GraphQL对象执行查询并返回结果。
标签:Java,入门,对象,RuntimeWiring,Graphql,import,graphql,hello,schema 来源: https://blog.51cto.com/14223214/2538250
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。