Quarkus 3.x下如何创建接收GraphQLRequest的GraphQL服务?
在 Quarkus 3.x 中使用 quarkus-smallrye-graphql 和 quarkus-resteasy-reactive-jackson 时,自定义的 GraphQL 端点无法正常工作,主要是框架默认行为和依赖配置的变化导致,以下是需要调整的关键步骤:
禁用框架自动生成的 GraphQL 端点
Quarkus 3.x 的 SmallRye GraphQL 扩展会自动创建/graphql标准端点,与你自定义的端点产生冲突。需要在application.properties中添加配置关闭自动端点:quarkus.smallrye-graphql.path=none调整依赖配置
如果你要完全自定义 GraphQL 管理器(包括 Schema 生成、解析逻辑),不需要依赖quarkus-smallrye-graphql——这个扩展是为注解式 GraphQL 开发(比如@GraphQLApi、@Query)设计的。你应该直接引入原生 GraphQL Java 依赖,示例 Maven 配置:<dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-java</artifactId> <version>19.2</version> <!-- 选择适配 Quarkus 3.x 的版本 --> </dependency> <dependency> <groupId>io.quarkus</groupId> <artifactId>quarkus-resteasy-reactive-jackson</artifactId> </dependency>确保请求响应类的序列化正常
在 Resteasy Reactive 环境下,GraphQLRequest和GraphQLResponse需要被 Jackson 正确序列化/反序列化。确保这两个类有标准的 getter/setter 方法,或者添加 Jackson 注解(如@JsonProperty)明确字段映射。验证类扫描配置
确认你的GraphQLResource类在 Quarkus 的扫描范围内,比如放在应用的根包下,或者通过quarkus.index-dependency配置指定需要扫描的包路径。
内容的提问来源于stack exchange,提问作者Novoj

