graphqljava中的自定义标量

7tofc5zh  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(456)

我们计划在应用程序中使用graphql作为后端服务器。我们选择graphqljava来开发poc。我们遇到了一个创建自己的scalartype来处理java.util.map对象类型的方法。
我们还没有找到任何关于创建自定义标量类型的文档。示例代码如下

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

如何实现customscalar对象。我需要帮助。

rqcrx0a6

rqcrx0a61#

要了解如何生成标量,只需查看现有的标量并执行类似的操作。
graphqljava还有一个单独的额外标量项目:graphqljava扩展标量。在这里可以找到对象标量(又称json标量),它可以用于动态结构,比如 Map s。
注册方式:

RuntimeWiring.newRuntimeWiring().scalar(ExtendedScalars.Object)
lqfhib0f

lqfhib0f2#

在代码优先方法(SPQRV0.9.6)中,添加@graphqlscalar就足够了。或者,将标量定义添加到graphqlschemagenerator:

new GraphQLSchemaGenerator()
.withScalarMappingStrategy(new MyScalarStrategy())

并定义我的策略:

class MyScalarStrategy extends DefaultScalarStrategy {

@Override
public boolean supports(AnnotatedType type) {
  return super.supports(type) || GenericTypeReflector.isSuperType(MyScalarStrategy.class, type.getType());
}
}

相关问题