簡體   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