添加自定义 Scalars
在 DGS 框架中添加自定义 scalar 类型很容易:创建一个实现 graphql.schema.Coercing
接口的类,并用 @DgsScalar
注释它。还要确保这个 scalar 类型也定义在 GraphQL schema 中。
例如,这是一个简单的 LocalDateTime
实现:
Schema:
注册自定义 Scalars
Tip
通过 graphql-dgs-extended-scalars 自动注册 Scalar 扩展
DGS 框架,从版本 3.9.2 开始,有 graphql-dgs-extended-scalars
模块。此模块提供 auto-configuration,它可以将定义在 com.graphql-java:graphql-java-extended-scalars
中的 scalar extension 自动注册。使用它你可以:
在你的 schema 定义 scalar
graphql-java-extended-scalars
模块提供了一些你可以关闭注册的把手。
属性
描述
dgs.graphql.extensions.scalars.time-dates.enabled
如果设置成 false
, 将不会注册 DateTime, Date, 和 Time scalar extensions.
dgs.graphql.extensions.scalars.objects.enabled
如果设置成 false
, 将不会注册 Object, Json, Url, 和 Locale scalar extensions.
dgs.graphql.extensions.scalars.numbers.enabled
如果设置成 false
, 将不会注册所有的 numeric scalar extensions 比如 PositiveInt, NegativeInt, 等等.
dgs.graphql.extensions.scalars.chars.enabled
如果设置成false
, 将不会注册 GraphQLChar extension.
dgs.graphql.extensions.scalars.enabled
如果设置成 false
, 将关闭自动注册上面的所有类型.
重要
graphql-java-extended-scalar
模块不会修改此类插件的行为。您需要显式定义 type mappings。例如,假设我们想同时使用Url
和PositiveInt
Scalars。您必须将下面的映射添加到构建文件中。Gradle:
Gradle Kotlin:
通过 DgsRuntimeWiring 注册 Scalar Extensions
你也可以手动注册 Scalar Extensions。你需要:
在你的 schema 定义 scalar
注册 scalar
这是一个怎样注册的例子:
Schema:
你可以在 DGS 框架中手动注册 Long
scalar:
最后更新于
这有帮助吗?