繁体   English   中英

在 spring 启动 graphql 启动器中等效的 Kickstarter 类型字典

[英]Kickstarter type dictionary equivalent in spring boot graphql starter

使用spring-boot-starter-graphql时 Spring 是使用简单的名称来 class 映射。 例如对于突变:

mutation {
  addCategory(id: 6, name: "Green Fruits", products: [8, 2, 3]) {
    name
    products {
      name
    }
  }
}

Spring 将检查名为 addCategory 的突变和名为Product的 class 的突变。

graphql-java-kickstart 提供了一种方法来维护与该模式不匹配的类的字典: https://www.graphql-java-kickstart.com/tools/schema-definition/#type-dictionary

spring-boot-starter-graphql有类似的东西吗?

Spring 的TypeResolver似乎适用于接口和联合

默认情况下,GraphQL 的 Spring 将使用ClassNameTypeResolver查找 GraphQL Z497031794414A552435F901 返回的值。 这是查看值的简单 class 名称,如果不成功,它还会导航其超类型,包括基类和接口。

如果 Class 名称与架构中的任何类型名称都不匹配,您可以配置自定义类型解析器并在其中添加其他逻辑。

您可以实例化ClassNameTypeResolver并设置其

ClassNameTypeResolver classNameTypeResolver = new ClassNameTypeResolver();
classNameTypeResolver.setClassNameExtractor((klass) -> {
    // Look up into a custom dictionnary
    // fall back to klass.getSimpleName() if none found
});

这可以通过GraphQlSourceBuilderCustomizer Boot 中的 GraphQlSourceBuilderCustomizer 提供。 请参阅https://docs.spring.io/spring-graphql/docs/current-SNAPSHOT/reference/html/#execution-graphqlsource-default-type-resolver

没有这样的字典,但您可以覆盖默认行为并自定义类型解析器。

看看这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM