graphql-java:如何在以编程方式生成 graphql 模式时添加自定义标量类型?

Posted

技术标签:

【中文标题】graphql-java:如何在以编程方式生成 graphql 模式时添加自定义标量类型?【英文标题】:graphql-java: How to add custom scalar type while generating graphql schema programmatically? 【发布时间】:2020-10-01 12:34:50 【问题描述】:

我正在使用 graphql-java 构建一个 graphql 模式。目前我以编程方式构建所有类型并使用以下语句来构建架构:

/* Construct the schema */
GraphQLSchema schema = GraphQLSchema.newSchema()
        .query(query)
        .mutation(mutations)
        .additionalTypes(types)
        .codeRegistry(codeRegistryBuilder.build())
        .build();

我想添加一个自定义标量类型来处理 JSON 对象。我看到的所有添加自定义标量类型的示例都使用 RuntimeWiring。他们建议我应该做以下模型:

RuntimeWiring buildRuntimeWiring() 
    return RuntimeWiring.newRuntimeWiring()
            .scalar(CustomScalar)

GraphQLSchema schema = new SchemaGenerator().makeExecutableSchema(registry, runtimeWiring);

由于我没有使用 RuntimeWiring,我想知道如何添加自定义标量类型。非常感谢您的帮助。

谢谢, 饶

【问题讨论】:

【参考方案1】:

您可以直接实例化 GraphQLScalarType 实例并将其添加到 GraphQL 构建器中的其他类型:

GraphQLScalarType fooScaler = new GraphQLFooScaler();
types.add(fooScaler);

GraphQLSchema schema = GraphQLSchema.newSchema()
        .query(query)
        .mutation(mutations)
        .additionalTypes(types)
        .codeRegistry(codeRegistryBuilder.build())
        .build();

SchemaGenerator 仅在您从 GraphQL SDL 构建架构时使用。如果在代码中手动构建Schema,则不需要。

【讨论】:

很高兴听到。所以请考虑投票支持我的答案或接受它?谢谢。

以上是关于graphql-java:如何在以编程方式生成 graphql 模式时添加自定义标量类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在以编程方式制作滚动视图时解决此问题?

如何在以编程方式创建实体时设置 NSManagedObjectModel 的配置。

如何使用 XCTest 在以编程方式添加的 UIView 上测试 UILabel

IOS5 - 如何在以编程方式创建的视图中播放视频?

ObjC,在以编程方式添加/删除后恢复为界面构建器自动布局约束?

如何在以编程方式创建的 UIPicker Delegate 中返回选定的值