基于Spring Boot的GraphQL项目

这是一篇面向那些想用Java创建GraphQL服务的人。它需要一些Spring Boot和Java知识,虽然我们简要介绍了GraphQL,但本教程的重点是用Java开发GraphQL服务器。

3分钟内搭建GraphQL

GraphQL是一种从服务器检索数据的查询语言。在某种程度上,它是REST、SOAP或gRPC的替代品。

假设我们要从在线商店后端查询特定书籍的详细信息。

使用GraphQL,您向服务器发送以下查询,以获取id为“book-1”的书籍的详细信息:

{
  bookById(id: "book-1"){
    id
    name
    pageCount
    author {
      firstName
      lastName
    }
  }
}

这不是JSON(尽管它看起来有意地相似),而是一个GraphQL查询。它基本上说:

  • 查询具有特定id的书籍
  • 给我那本书的id,名字,页数和作者
  • 对于作者,我想知道名字和姓氏

响应为正常JSON:

{
  "bookById":
  {
    "id":"book-1",
    "name":"Harry Potter and the Philosopher's Stone",
    "pageCount":223,
    "author": {
      "firstName":"Joanne",
      "lastName":"Rowling"
    }
  }
}

GraphQL的一个非常重要的特性是它是静态类型的:服务器确切地知道您可以查询的每个对象的形状,任何客户端实际上都可以“内省”服务器并请求所谓的“模式”。模式描述了哪些查询是可能的,哪些字段可以返回。(注意:当我们在这里提到模式时,我们总是提到“GraphQL模式”,它与其他模式(如“JSON模式”或“数据库模式”)无关)

上述查询的架构如下所示:

type Query {
  bookById(id: ID): Book
}

type Book {
  id: ID
  name: String
  pageCount: Int
  author: Author
}

type Author {
  id: ID
  firstName: String
  lastName: String
}

本教程将重点介绍如何在Java中使用此模式实现GraphQL服务器。

我们几乎没有触及GraphQL可能实现的功能的表面。更多信息可在官方网页上找到:https://graphql.github.io/learn/

GraphQL Java概述

GraphQL Java是GraphQL的Java(服务器)实现。GraphQL Java Github组织中有几个存储库。最重要的是 GraphQL Java引擎 ,它是其他一切的基础。

GraphQLJava引擎本身只关心执行查询。它不处理任何与HTTP或JSON相关的主题。对于这些方面,我们将使用 GraphQLJavaSpringBootAdapter ,它负责通过SpringBootoverHTTP公开我们的API。

创建GraphQL Java服务器的主要步骤包括:

1. 定义GraphQL模式。

2. 决定如何获取查询的实际数据。

我们的示例API:获取书籍详细信息

我们的示例应用程序将是一个简单的API,用于获取特定书籍的详细信息。这绝不是一个全面的API,但对于本教程来说已经足够了。

创建一个Spring启动应用程序

创建Spring启动应用程序最简单的方法是在https://start.spring.io/.

选择:

  • Gradle Project
  • Java
  • Spring Boot 2.1.x

对于我们使用的项目元数据:

com.graphql-java.tutorial
book-details

作为依赖项,我们只选择Web。

点击Generate项目将为您提供一个随时可用的Spring Boot应用程序。所有随后提到的文件和路径都将与此生成的项目相关。

我们在build的dependencies部分向我们的项目添加了三个依赖项 build.gradle

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值