我们计划在我们的应用程序中使用Graphql作为后端服务器。我们选择Graphql-Java来开发我们的POC。我们遇到了一个创建自己的scalartype来处理java.util.Map对象类型的情况。
我们没有找到有关创建自定义标量类型的任何文档。 在下面的示例代码中
RuntimeWiring buildRuntimeWiring() {
return RuntimeWiring.newRuntimeWiring()
.scalar(CustomScalar)
如何为CustomScalar对象完成实现。 需要帮助。
答案 0 :(得分:2)
要大致了解如何制作标量,只需查看the existing ones并执行类似操作。
graphql-java还有一个单独的项目用于额外的标量:graphql-java-extended-scalars。在那里,您可以找到可用于动态结构的object scalar (a.k.a. JSON scalar),例如Map
s。
通过以下方式注册:
RuntimeWiring.newRuntimeWiring().scalar(ExtendedScalars.Object)
答案 1 :(得分:0)
在代码优先方法(SPQR v0.9.6)中添加 @GraphQLScalar 就足够了。 或者,作为替代方案,将标量定义添加到GraphQLSchemaGenerator:
new GraphQLSchemaGenerator()
.withScalarMappingStrategy(new MyScalarStrategy())
定义MyScalarStrategy:
class MyScalarStrategy extends DefaultScalarStrategy {
@Override
public boolean supports(AnnotatedType type) {
return super.supports(type) || GenericTypeReflector.isSuperType(MyScalarStrategy.class, type.getType());
}
}