graphql-spring-boot,结合GraphQL的Spring Boot Starters类库概述

Spring Boot 同时被 3 个专栏收录
10 篇文章 0 订阅
19 篇文章 0 订阅
5 篇文章 0 订阅

GraphQL服务器能够提供的API查询请求,往往是通过HTTP实现的。而Spring Boot能够方便地构建一个Web服务,于是自然就引入了Spring Boot使能的GraphQL服务器。

graphql-spring-boot是一个Spring Boot应用的辅助类库,基于GraphQL Java实现的graphql-java和graphql-java-servlet,能够以Spring Boot应用的方式构建一个GraphQL服务器。

graphql-spring-boot类库的全名为GraphQL and GraphiQL Spring Framework Boot Starters。GraphiQL是与GraphQL功能类似的一个测试服务器,这里不详述。

graphql-spring-boot类库的最新版本是2018.1.12发布的4.0.0。其使用要求:

  • Java 1.8
  • Spring Boot 2.x.x
1. 组成

graphql-spring-boot类库包含两个彼此独立的子项目:

  • com.graphql-java.graphql-spring-boot-starter
  • com.graphql-java.graphiql-spring-boot-starter

2. 在Spring Boot的Maven项目中的配置

pom.xml文件中添加如下依赖:

<dependency>
    <groupId>com.graphql-java</groupId>
    <artifactId>graphql-spring-boot-starter</artifactId>
    <version>4.0.0</version>
</dependency>

3. 定义GraphQLSchema对象,并使用@Bean标注为Spring bean

这里的示例以简化的方法直接返回GraphQLSchema对象如下:

    @Bean
    GraphQLSchema schema() {
        String schema = "type Query {hello: String}";

        SchemaParser schemaParser = new SchemaParser();
        TypeDefinitionRegistry typeDefinitionRegistry = schemaParser.parse(schema);

        RuntimeWiring runtimeWiring = newRuntimeWiring()
                .type("Query", builder -> builder.dataFetcher("hello", new StaticDataFetcher("Xiangbin")))
                .build();

        SchemaGenerator schemaGenerator = new SchemaGenerator();
        return schemaGenerator.makeExecutableSchema(typeDefinitionRegistry, runtimeWiring);

4.GraphQL服务器的URI设置

由于graphql-spring-boot依赖graphql-java-servlet,所以默认开放的Web访问endpoint为/graphql,这是在graphql-java-servlet中定义的。

如果要使用其他的endpoint,可以通过Spring Boot的配置文件,在application.properties文件中配置如下:

graphql.servlet.mapping=/graphql
graphql.servlet.enabled=true
graphql.servlet.corsEnabled=true

或者在application.yaml文件中配置如下:

graphql:
	  servlet:
		   mapping: /graphql
		   enabled: true
		   corsEnabled: true

5.启动Spring Boot应用

可以在IDE中直接run,也可以在命令行中执行java -jar my_project.jar

6.浏览器访问

使用HTTP POST请求,请求的URI为http://localhost:8080/graphql/,请求的body为{"query":"{hello}"}。

这样就可以得到响应的结果{"data":{"hello": "Xiangbin"}}。


参考链接:

https://github.com/graphql-java/graphql-spring-boot

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

易生一世

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值