我想将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 bean,那么servlet就可以在GraphQLSchema上访问.当在类路径上找到受支持的GraphQL模式库时,还可以自动创建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();
}我想我错过了什么,但经过一天的尝试,我现在被困住了,我不知道什么是我的错误。
发布于 2020-07-27 00:36:40
您是否将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();
}
}如果在引导应用程序中添加了一个依赖项,并且在应用程序中存在一个/graphql bean,那么servlet就可以在GraphQLSchema上访问。请查看简单的示例,以获得所需的最低限度。当在类路径上找到受支持的GraphQL模式库时,还可以自动创建graphql模式。
遵循这个文档线程,最终将导致GraphQL Java工具项目文档,这说明了如何从.graphqls定义中生成必要的.graphqls对象。最后,我们必须以某种方式将这些定义映射到Java中,这就是Spring,因此@Bean您的根解析器,因此它有一个实现可以使用,您应该可以使用它。
https://stackoverflow.com/questions/58747473
复制相似问题