2016-04-13 11 views
4

Grafiksel Java'yı (https://github.com/andimarek/graphql-java) prototiplemeye çalışıyorum ve merhaba dünya örneğinden oluşturmaya başladım. Şema ile graphQL hizmetini çağırmak için GraphiQL kullanıyorum ve şema için çalışıyorum {hello1}, ancak şema için çalışmıyor {testPojo}. Lütfen aşağıda koştuğum kodu bulun. Birisi aşağıdaki kodla ilgili sorunun ne olduğunu bana bildirebilir.Graphql Java Merhaba dünya: Ebeveyn şemasına bir alt şema eklenmesi başarısız oluyor

static GraphQLSchema schema = null; 
/** 
    * POJO to be returned for service method 2 
    * @author 
    * 
    */ 
private class TestPojo { 
    String id; 
    String name; 

    TestPojo(String id, String name) { 
     this.id = id; 
     this.name = name; 
    } 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

/** 
* service method 1 
* @return 
*/ 
public String greeting1() { 
    return "Hello123"; 
} 

/** 
* service method 2 
* @return 
*/ 
public TestPojo greeting2() { 
    return new TestPojo("1","Jack"); 
} 


/** 
* GraphQl endpoint invoked using GraphiQl 
* @param query 
* @return 
*/ 
@RequestMapping("/query") 
public Object testGraphQLWithQuery(@RequestParam("query") String query) { 
    return new GraphQL(schema).execute(query).getData(); 
} 

// Schema definition for graphQL 
static { 

    // sub schema to be added to parent schema 
    GraphQLObjectType testPojo = newObject().name("TestPojo").description("This is a test POJO") 
      .field(newFieldDefinition().name("id").type(GraphQLString).build()) 
      .field(newFieldDefinition().name("name").type(GraphQLString).build()) 
      .build(); 


    // parent schema 
    GraphQLObjectType queryType = newObject().name("helloWorldQuery") 
      .field(newFieldDefinition().type(GraphQLString).name("hello1").dataFetcher(new DataFetcher() { 

       @Override 
       public Object get(DataFetchingEnvironment arg0) { 
        Object a = new GrapgQLSampleController().greeting1(); 
        return a; 
       } 
      }).build()) 
      .field(newFieldDefinition().type(testPojo).name("testPojo").dataFetcher(new DataFetcher() { 

       @Override 
       public Object get(DataFetchingEnvironment arg0) { 
        Object a = new GrapgQLSampleController().greeting2(); 
        return a; 
       } 
      }).build()) 
      .build(); 

    schema = GraphQLSchema.newSchema().query(queryType).build(); 
} 

cevap

0

Sadece kodunuzu test ettik ve gayet iyi çalışıyor gibi görünüyor. Yanlış gördüğünle ilgili daha spesifik olmalısın. Sorunuz {testPojo} sorgusunun neden geçersiz olduğunu soruyorsanız, o zaman hatayı almanız gerekir: alt-seçim gereklidir. GraphQL'de tüm karmaşık bir nesneyi seçemezsiniz, istediğiniz alt alanları belirtmeniz gerekir, ör. {testPojo {id, name}} geçerli bir sorgundur ve şemanızla uyumludur.