我想编写一段代码,它将处理像这样的GraphQL查询:
query { group(id: "com.graphql-java") name(name: "graphql-java") version(id: "2.3.0") }
import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; public class TestDataFetcher implements DataFetcher { public Object get(final DataFetchingEnvironment dataFetchingEnvironment) { return null; } }
然后我写了以下代码:
public class Example02 { public static void main(final String[] args) throws IOException { final Example02 app = new Example02(); app.run(); } void run() throws IOException { final TestDataFetcher testDataFetcher = new TestDataFetcher(); final List<GraphQLFieldDefinition> fields = Lists.newArrayList( createGroupField(testDataFetcher),createNameField(),createVersionField()); final GraphQLObjectType queryType = newObject() .name("query") .fields(fields) .build(); final GraphQLSchema schema = GraphQLSchema.newSchema() .query(queryType) .build(); final String query = FileUtils.readFileToString( new File("src/main/resources/query1.txt"),"UTF-8" ); final Map<String,Object> result = (Map<String,Object>) new GraphQL(schema).execute(query).getData(); System.out.println(result); } private GraphQLFieldDefinition createVersionField() { return newFieldDefinition().type(GraphQLString).name("version").build(); } private GraphQLFieldDefinition createNameField() { return newFieldDefinition().type(GraphQLString).name("name").build(); } private GraphQLFieldDefinition createGroupField(TestDataFetcher testDataFetcher) { final GraphQLArgument idArg = newArgument().name("id").type(GraphQLString).build(); return newFieldDefinition() .type(GraphQLString) .name("group") .dataFetcher(testDataFetcher) .argument(idArg) .build(); } }
当我在调试模式下运行main方法时,断点不被激活.
为什么?我该怎么解决?
解决方法
这是您的工作示例.
我已经使用你发布的查询文件.
根据需要进一步实现您的dataFetcher.
基本上你应该定义名称和版本字段的参数.
当您运行新的GraphQL(架构).execute(query)时,调试器会告诉所有内容
它具有包含所有问题的错误数组.
我已经使用你发布的查询文件.
根据需要进一步实现您的dataFetcher.
基本上你应该定义名称和版本字段的参数.
当您运行新的GraphQL(架构).execute(query)时,调试器会告诉所有内容
它具有包含所有问题的错误数组.
import graphql.GraphQL; import graphql.schema.*; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import static graphql.Scalars.GraphQLString; import static graphql.schema.GraphQLArgument.newArgument; import static graphql.schema.GraphQLFieldDefinition.newFieldDefinition; import static graphql.schema.GraphQLObjectType.newObject; public class Example2 { public class TestDataFetcher implements DataFetcher { public Object get(DataFetchingEnvironment environment) { String id = (String)environment.getArgument("id"); return id; } } public static void main(final String[] args) { Example2 app = new Example2(); app.run(); } void run() { TestDataFetcher testDataFetcher = new TestDataFetcher(); List<GraphQLFieldDefinition> fields = new ArrayList<GraphQLFieldDefinition>(); fields.add(createGroupField(testDataFetcher)); fields.add(createNameField()); fields.add(createVersionField()); GraphQLObjectType queryType = newObject() .name("query") .fields(fields) .build(); GraphQLSchema schema = GraphQLSchema.newSchema() .query(queryType) .build(); String query = null; try { query = FileUtils.readFileToString( new File("src/main/resources/query1.txt"),"UTF-8" ); }catch(IOException ioe){ ioe.printStackTrace(); } if(query!=null) { Map<String,Object>) new GraphQL(schema).execute(query).getData(); System.out.println(result); } } private GraphQLFieldDefinition createVersionField() { GraphQLArgument arg = newArgument().name("id").type(GraphQLString).build(); return newFieldDefinition().type(GraphQLString).name("version").argument(arg).build(); } private GraphQLFieldDefinition createNameField() { GraphQLArgument arg = newArgument().name("name").type(GraphQLString).build(); return newFieldDefinition().type(GraphQLString).name("name").argument(arg).build(); } private GraphQLFieldDefinition createGroupField(TestDataFetcher testDataFetcher) { final GraphQLArgument idArg = newArgument().name("id").type(GraphQLString).build(); return newFieldDefinition() .type(GraphQLString) .name("group") .dataFetcher(testDataFetcher) .argument(idArg) .build(); } }