Graphql 返回枚举集合

Posted

技术标签:

【中文标题】Graphql 返回枚举集合【英文标题】:Graphql return enum collection 【发布时间】:2019-06-08 15:39:32 【问题描述】:

我想使用graphql 返回枚举的所有值。 我有schema:

schema 
    query: Query


type Query 
    getDataTypes: [DictionaryType]



enum DictionaryType
   RISK
   SALES_CHANNEL
   PERSON_TYPE

我们有正常的 java 枚举:

public enum DictionaryType 
    RISK,
    SALES_CHANNEL,
    PERSON_TYPE

Controller 配置:

public class DictionaryController 
    @Value("classpath:items.graphqls")
    private Resource schemaResource;
    private GraphQL graphQL;
    private final DictionaryService dictionaryService;

    @PostConstruct
    public void loadSchema() throws IOException 
        File schemaFile = schemaResource.getFile();
        TypeDefinitionRegistry registry = new SchemaParser().parse(schemaFile);
        RuntimeWiring wiring = buildWiring();
        GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(registry, wiring);
        graphQL = GraphQL.newGraphQL(schema).build();
    

    private RuntimeWiring buildWiring() 
        DataFetcher<Set<DictionaryType>> fetcher3 = dataFetchingEnvironment -> 
            return dictionaryService.getDictionaryTypes();
        ;

        return RuntimeWiring.newRuntimeWiring().type("Query", typeWriting ->
            typeWriting
                    .dataFetcher("getDataTypes", fetcher3))
                    .build();
    

    @PostMapping("getDataTypes")
    public ResponseEntity<Object> getDataTypes(@RequestBody String query) 
        ExecutionResult result = graphQL.execute(query);
        return new ResponseEntity<Object>(result, HttpStatus.OK);
    
   

当我把POST 变成http://localhost:50238/getDataTypes 与身体:


    getDataTypes 

    

我得到"errorType": "InvalidSyntax", 作为回应。

【问题讨论】:

getDataTypes 工作,谢谢。 【参考方案1】:

这是一个无效的查询,因为您的大括号没有内容(即 )。您的架构表明查询应该更简单:

 getDataTypes 

【讨论】:

以上是关于Graphql 返回枚举集合的主要内容,如果未能解决你的问题,请参考以下文章

如何在 GraphQL 中返回枚举选项?

在 graphql-yoga 中返回枚举的解析器函数是啥样的?

如果它们来自数据源,如何在 graphql 模式中表示枚举?

可以为 GraphQL 解析器转换返回类型吗

将 graphql 枚举映射到 kotlin 枚举

编写一个类是从 graphql API 响应返回的 JSON 对象创建变量集合的好方法吗?