6

我们计划在我们的应用程序中使用 Graphql 作为后端服务器。我们选择 Graphql-Java 来开发我们的 POC。我们遇到了创建自己的标量类型来处理 java.util.Map 对象类型的情况。

我们还没有找到任何有关创建自定义标量类型的文档。在如下示例代码中

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

如何为 CustomScalar 对象完成实现。需要帮忙。

4

2 回答 2

7

要大致了解如何制作标量,只需查看现有的并做类似的事情。

graphql-java 还有一个用于额外标量的单独项目:graphql-java-extended-scalars。在那里你可以找到对象标量(又名 JSON 标量),它可以用于动态结构,比如Maps。

通过以下方式注册:

RuntimeWiring.newRuntimeWiring().scalar(ExtendedScalars.Object)
于 2017-09-06T11:33:50.837 回答
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());
}
}
于 2018-04-18T13:16:35.823 回答