Quarkus SmallRye GraphQL类型安全客户端Mutation报未知类型错误
Quarkus类型安全GraphQL客户端调用Linear.app创建Issue报错问题
我正在尝试将Quarkus应用与Linear.app集成,使用类型安全客户端可以正常读取数据,但执行创建Issue的Mutation时遇到了问题。
预期的GraphQL查询格式
正确的查询应该是这样的:
mutation IssueCreate { issueCreate( input: { title: "Issue from Quarkus Test at 1737606760071" description: "Something went wrong" teamId: "my-linear-team-id" } ) { success issue { id title } } }
其中my-linear-team-id为真实的团队ID。
实际请求与报错
日志显示客户端生成的GraphQL请求如下:
{ "query": "mutation issueCreate($input: CreateIssueInputInput!) { issueCreate(input: $input) {success issue {id title}} }", "variables": { "input": { "title": "Issue from Quarkus Test at 1737606760071", "description": "Something went wrong", "teamId": "my-linear-team-id" } }, "operationName": "issueCreate" }
得到的错误响应:
{ "errors": [ { "message": "Unknown type \"CreateIssueInputInput\".", "locations": [ { "line": 1, "column": 30 } ], "extensions": { "code": "GRAPHQL_VALIDATION_FAILED", "type": "graphql error", "userError": true, "meta": {} } } ] }
我的Java代码
CreateIssueInput类
public class CreateIssueInput { private String title; private String description; private String teamId; // Getters and setters ... }
CreateIssueResponse类
public class CreateIssueResponse { private boolean success; private Issue issue; // Getters and setters ... public static class Issue { private String id; private String title; // Getters and setters ... } }
LinearClientApi接口
import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi; @GraphQLClientApi(configKey = "linear-typesafe") public interface LinearClientApi { @Mutation CreateIssueResponse issueCreate(@NonNull CreateIssueInput input); }
调用代码
// Send to Linear: CreateIssueInput linearIssue = new CreateIssueInput(); linearIssue.setTeamId("my-linear-team-id"); // For the SO example linearIssue.setTitle("Issue from Quarkus Test at " + System.currentTimeMillis()); linearIssue.setDescription("Something went wrong"); linearClientApi.issueCreate(linearIssue);
尝试的解决方案
编辑1:移除@NonNull注解
修改接口方法为:
@Mutation CreateIssueResponse issueCreate(CreateIssueInput input);
但仍然报错:"Unknown type \"CreateIssueInputInput\"."
编辑2:重命名输入类
将CreateIssueInput类重命名为CreateIssue,修改后的接口方法:
@Mutation CreateIssueResponse issueCreate(@NonNull CreateIssue input);
此时生成的请求变为:
{ "query": "mutation issueCreate($input: CreateIssueInput!) { issueCreate(input: $input) {success issue {id title}} }", "variables": { "input": { "title": "Issue from Quarkus Test at 1737648584761", "description": "Something went wrong", "teamId": "bf63d22b-d57a-4f57-9161-8de9c2145034" } }, "operationName": "issueCreate" }
对应的错误响应变为:
{ "errors": [ { "message": "Unknown type \"CreateIssueInput\".", "locations": [ { "line": 1, "column": 30 } ], "extensions": { "code": "GRAPHQL_VALIDATION_FAILED", "type": "graphql error", "userError": true, "meta": {} } } ] }
目前判断问题出在输入类型的映射上,接下来打算用动态客户端构建查询,确认Linear.app期望的正确类型和语法,再和类型安全客户端生成的内容做对比。
内容的提问来源于stack exchange,提问作者Murrah
相关产品推荐
相关产品推荐

