Graphql-Java快速入门指导

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对象执行查询并返回结果。
上一篇:javascript – “connectionArgs”Relay js的附加参数


下一篇:javascript – 具有自己查询的Gatsby可重用组件