首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring-启动不创建graphql端点

Spring-启动不创建graphql端点
EN

Stack Overflow用户
提问于 2019-11-07 11:08:47
回答 1查看 3.6K关注 0票数 2

我想将Graphql集成到我的项目中。我是从一个新的Spring引导项目开始的,以下(几个)教程中没有一个是有效的: graphql端点没有出现,似乎没有检测到graphqls文件?

我的项目是一个具有以下依赖项的Maven项目:

代码语言:javascript
复制
<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文件(在参考资料文件夹中):

代码语言:javascript
复制
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端点出现的唯一方法是以编程方式创建模式(我希望避免这种情况):

代码语言:javascript
复制
@Bean
    GraphQLSchema schema() {
    return GraphQLSchema.newSchema()
            .query(GraphQLObjectType.newObject()
                    .name("query")
                    .field(field -> field
                            .name("test")
                            .type(Scalars.GraphQLString)
                            .dataFetcher(environment -> "response")
                            )
                    .build())
            .build();
}

我想我错过了什么,但经过一天的尝试,我现在被困住了,我不知道什么是我的错误。

EN

回答 1

Stack Overflow用户

发布于 2020-07-27 00:36:40

您是否将GraphQLQueryResolver公开为@Bean,以便自动配置知道如何搜索架构文件?

代码语言:javascript
复制
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您的根解析器,因此它有一个实现可以使用,您应该可以使用它。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58747473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档