我想编写一段代码,它将处理像这样的GraphQL查询:
- query {
- group(id: "com.graphql-java")
- name(name: "graphql-java")
- version(id: "2.3.0")
- }
我创建了一个数据提取器,并在get方法中放置一个断点:@H_403_5@
- 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();
- }
- }
解决方法
这是您的工作示例.
我已经使用你发布的查询文件.
根据需要进一步实现您的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();
- }
- }