首页 > 解决方案 > Graphql Schema doku 使用 Input 自动显示 Input 类型

问题描述

如自述文件中所述,我添加了leagen/graphql-spqr。在我们有一个像 customtype.types.gql 这样的 graphql 类型的自定义实现之前。

实施后,一切正常,除了称为 OperatorInput 的类型,在自动生成的 graphql 文档中命名,如“OperatorInputInput”。我试图在声明中像这样更改它:

@GraphQLArgument(name = "OperatorInput", description = "Required fields for Operator") OperatorInput operator

但它没有被应用。你知道任何解决方法吗?

标签: graphql-spqr

解决方案


这是有意的。请记住,在 GraphQL 的类型系统中,输入和输出类型是完全不同的。假设你在 Java 中有这个:

public Book saveBook(Book in) {...}

Book返回类型和Book参数类型在 GraphQL 中是两种不同的类型,并且必须具有唯一的名称。因此Input会自动添加以使名称唯一。

如果您 100% 确定要覆盖它,请TypeInfoGenerator通过GraphQLSchemaGenerator#withTypeInfoGenerator. 您可以继承DefaultTypeInfoGenerator和覆盖generateInputTypeName. 但!请注意,如果您最终为 2 种不同的类型生成相同的名称,那么一切都会崩溃Input因此,如果类名已经结束Input并且永远不会使用此类类进行输出,则可能只删除后缀。

顺便说一句@GraphQLArgument,设置参数的名称,而不是参数类型的名称。


推荐阅读