我已经按照自述添加了leangen/graphql-spqr。在此之前,我们有像customtype.types.gql.
中那样的graphql类型的自定义实现。实现后,一切工作正常,除了被称为OperatorInput的类型,在自动生成的图形文档中命名,如&;operatorinputinput&;我试着在声明中像这样改变它:
@GraphQLArgument(name = "OperatorInput", description = "Required fields for Operator") OperatorInput operator
但是它没有被应用。你知道什么解决办法吗?
这是预期的。请记住,在GraphQL的类型系统中,输入和输出类型是严格不同的。假设你在Java中有这样的代码:
public Book saveBook(Book in) {...}
作为返回类型的Book
和作为参数类型的Book
在GraphQL中是两种不同的类型,并且必须具有唯一的名称。因此,自动添加Input
以使名称唯一。
如果你100%确定你想要覆盖这个,通过GraphQLSchemaGenerator#withTypeInfoGenerator
注册一个自定义的TypeInfoGenerator
。您可以继承DefaultTypeInfoGenerator
并覆盖generateInputTypeName
。但是!请注意,如果您最终为两个不同的类型生成相同的名称,那么所有的都将崩溃。. 因此,如果类名已经以Input
结尾,则可能只删除后缀Input
,并且永远不要将此类用于输出。
顺便说一下,@GraphQLArgument
设置参数的名称,而不是参数的类型的名称。