gpt4 book ai didi

java - 突变中不使用 GraphQL 变量

转载 作者:太空宇宙 更新时间:2023-11-04 10:42:22 25 4
gpt4 key购买 nike

我的突变查询:

mutation ($matchId: String!) {
assignMatch(matchId: $matchId) {
id
}
}

查询变量:

{ "matchId": "123" }

GraphQL 架构(突变定义):

type Mutation {
assignMatch(matchId: String!): Assignment
}

GraphQL 服务器是用 Java 编写的。但我非常确定该请求不是事件到达它并且在 GraphQL 层上失败。不管怎样,模式定义非常简单:GraphQL graphQL = GraphQL.newGraphQL(SchemaParser.newParser().file("schema.graphqls").build().makeExecutableSchema())

结果:消息错误 Variable 'matchId' has coerced Null value for NonNull type 'String!

请注意突变 assignMatch(matchId: "123")成功。

我是否以错误的方式定义了查询变量?或者为什么 GraphiQL 没有接收到?

我尝试使用 GraphiQL 接口(interface)和 apollo-client 发送带有变量的请求,但出现相同的错误。有什么想法吗?

最佳答案

耶!!原因是我的 GraphQLController 类没有解析请求中的变量:

@RequestMapping(value = "/graphql", method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_UTF8_VALUE,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@ResponseBody
public String execute(@RequestBody Map<String, Object> request) throws IOException {
ExecutionInput executionInput = ExecutionInput.newExecutionInput()
.query((String) request.get("query"))
.operationName((String) request.get("operationName"))
// THE FOLLOWING LINE WAS ABSENT:
.variables((Map<String, Object>) request.get("variables"))
.build();
ExecutionResult executionResult = graphQL.execute(executionInput);
return mapper.writeValueAsString(executionResult);
}

关于java - 突变中不使用 GraphQL 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48837551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com