Spring Boot GraphQL如何使用输入数组?已解决
Spring Boot GraphQL Mutation输入数组使用问题
问题说明
我是Spring Boot和GraphQL的新手,在网上未找到相关答案,故在此提问:GraphQL mutation中应如何使用输入数组?以下是我的尝试:
GraphQL Schema定义
// schema.graphqls type Mutation{ test(input:TestInput):String } input TestInput{ temp:[Int] }
Java Controller代码
// @Controller TestInputController.java @MutationMapping public String test(@Argument TestInput input){ System.out.println("hello"); System.out.println(input); return "test"; } record TestInput(Integer[] temp){}
执行的Mutation请求
// mutation in graphiql mutation{ test(input:{ temp:[5] }) }
报错信息
Error : java.lang.IllegalStateException: Cannot access properties on null bean instance 'input'
解决方案
将TestInput记录中的数组类型Integer[]替换为List<Integer>,修改后的Java代码如下:
// @Controller TestInputController.java @MutationMapping public String test(@Argument TestInput input){ System.out.println("hello"); System.out.println(input); return "test"; } record TestInput(List<Integer> temp){}
Spring GraphQL对数组类型的输入参数绑定支持不佳,改用List类型后,框架能正确解析并实例化输入对象,避免出现null实例的异常。
内容的提问来源于stack exchange,提问作者Louis Daisomont
相关产品推荐
相关产品推荐

