我想将Graphql集成到我的项目中。我在以下(几个)教程中开始了一个新的Spring引导项目,但是它们都不起作用:graphql端点未出现,似乎未检测到graphqls文件?
我的项目是一个Maven项目,具有以下依赖性:
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-spring-boot-starter</artifactId>
<version>5.10.0</version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphql-java-tools</artifactId>
<version>5.6.1</version>
</dependency>
<dependency>
<groupId>com.graphql-java-kickstart</groupId>
<artifactId>graphiql-spring-boot-starter</artifactId>
<version>5.10.0</version>
<scope>runtime</scope>
</dependency>
为了使帖子简短,我尝试只放置相关的依赖项,避免其他依赖项(Lombok,jpa等...)
还有我的graphqls文件(在资源文件夹中):
type Vehicle {
id: ID!,
type: String,
modelCode: String,
brandName: String,
launchDate: String
}
type Query {
vehicles(count: Int):[Vehicle]
vehicle(id: ID):Vehicle
}
type Mutation {
createVehicle(type: String!, modelCode: String!, brandName: String, launchDate: String):Vehicle
}
根据文档,应该创建graphql端点,因为我具有graphql-spring-boot-starter依赖关系和将通过我的vehicle.graphqls文件自动创建的模式(以及graphql-java-tools依赖关系)
如果将graphql-spring-boot-starter添加为启动应用程序的依赖项,并且应用程序中存在GraphQLSchema bean,则可以在/ graphql上访问servlet [...] 当在类路径中找到受支持的graphql-java模式库时,也可以自动创建GraphQL模式。
我使graphql端点出现的唯一方法是通过以编程方式创建模式(我想避免这种情况):
@Bean
GraphQLSchema schema() {
return GraphQLSchema.newSchema()
.query(GraphQLObjectType.newObject()
.name("query")
.field(field -> field
.name("test")
.type(Scalars.GraphQLString)
.dataFetcher(environment -> "response")
)
.build())
.build();
}
我想我错过了一些东西,但是经过一天的尝试,我现在陷入了困境,我看不出我的错误是什么。
答案 0 :(得分:0)
您是否将GraphQLQueryResolver
公开为@Bean
,以便自动配置知道搜索架构文件?
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class GraphQLConfiguration {
@Bean
QueryResolver queryResolver() {
return new QueryResolver();
}
@Bean
MutationResolver mutationMutation() {
return new MutationResolver();
}
}
Documentation for author's quote
如果将graphql-spring-boot-starter添加为引导应用程序的依赖项,并且该应用程序中存在GraphQLSchema bean,则可以在/ graphql上访问servlet。查看简单示例,了解所需的最低限度。
当在类路径中找到受支持的graphql-java模式库时,也可以自动创建GraphQL模式。
遵循该文档的主题,最终将引导您the GraphQL Java Tools project documentation,其中介绍了如何根据您的GraphQLSchema
定义生成必要的.graphqls
对象。最后,我们必须以某种方式将这些定义映射到Java中,这是Spring Boot,因此@Bean
是您的根解析器,因此它具有可以使用的实现,您应该一切顺利。