发布于 2026-01-06 0 阅读
0

Domain Graph Service (DGS) - Netflix DEV 为 Spring Boot 开发的开源 GraphQL 框架,Mux 主办的全球展示与分享挑战赛:展示你的项目!

Domain Graph Service (DGS) - Netflix 出品的基于 Spring Boot 的开源 GraphQL 框架

由 Mux 主办的 DEV 全球展示挑战赛:展示你的项目!

GraphQL 社区里有很多精彩的故事,讲述了 GraphQL 的实现如何改变产品,使其变得更好、更强大。有时,GraphQL 的应用会催生创新的需求。就像 GraphQL 本身一样,它最初由 Facebook 开发,后来公开发布。许多公司也决定开源他们的 GraphQL 实现,并将其提供给公众,因为他们看到了 GraphQL 能为开发者社区带来的巨大益处。以下就是其中一个故事。

它的起源

2019年,Netflix决定实施联邦式GraphQL架构,旨在:

  • 为消费者提供统一的API,
  • 赋予后端开发人员灵活性
  • 保持服务隔离。

对于一家后端开发一直采用 Spring Boot 的公司来说,向新架构的过渡意味着要在 Netflix 的 Java 生态系统中为众多不同的后端团队部署 GraphQL,这无疑是一项挑战。要称这项迁移成功,显然必须确保所有被迫实施 GraphQL 的团队都能在 Spring Boot 中获得卓越的 GraphQL 开发体验。这正是 Domain Graph Service 诞生的原因。

域图服务

Domain Graph Service (DGS)是 Netflix 内部开发的一个框架,旨在简化 Spring Boot 中独立和联合 GraphQL 服务的实现。该框架基于graphql-java构建。尽管 DGS 的大部分代码是用 Kotlin 编写的,但它主要设计用于 Java,其主要特性包括:

  • 基于注解的Spring Boot编程模型
  • 与 Spring Security 集成,
  • Gradle 代码生成插件,用于从 GraphQL schema 创建 Java/Kotlin 类型。
  • 一个用于 Java 的 GraphQL 客户端
  • 错误处理,
  • 轻松与GraphQL Federation集成
  • GraphQL 订阅(WebSocket 和 SSE),
  • 自动支持接口/联合类型。

意识到这对他们的开发者来说意义重大,Netflix 决定在 2020 年开源该框架并围绕它建立一个社区(Netflix 使用的是相同的开源组件!)。

DGS框架,包含Netflix和OSS模块

来源:netflixtechblog.com

入门

使用 DGS 非常简单。该框架的基础架构基于 Spring Boot 开发者熟知的基于注解的编程模型。让我们来看一个由该项目团队提供的示例:

首先,你需要定义一个 GraphQL schema,例如,像这样的简单 schema 就可以了:

type Query {
    shows(titleFilter: String): [Show]
}

type Show {
    title: String
    releaseYear: Int
}
Enter fullscreen mode Exit fullscreen mode

定义好模式后,下一步就是实现一个获取器……就完成了。这样就足以让你的 GraphQL 端点运行起来了!

@DgsComponent
public class ShowsDatafetcher {

    private final List<Show> shows = 
      List.of(
         new Show("Stranger Things", 2016),
         new Show("Ozark", 2017)
     );

    @DgsData(parentType = "Query", field = "shows")
    public List<Show> shows(@InputArgument("titleFilter") String titleFilter) {
        if(titleFilter == null) {
            return shows;
        }

        return shows.stream()
            .filter(s -> s.getTitle().contains(titleFilter))
            .collect(Collectors.toList());
    }
}
Enter fullscreen mode Exit fullscreen mode
来源:netflixtechblog.com

试试看

如果您想尝试 DGS 框架,请务必查看其官方文档和指南,或者直接访问GitHub 上的 DGS 代码库


加快您的 GraphQL API 开发速度

GraphQL Editor是一款强大的辅助工具,无论您是 GraphQL 高级用户还是 GraphQL API 初学者,都能轻松上手。我们的一体化 GraphQL 开发环境将帮助您更快地构建、管理和部署 GraphQL API。立即免费试用 GraphQL Editor!

GraphQL 编辑器的新功能 gif

文章来源:https://dev.to/graphqleditor/domain-graph-service-dgs-open-source-graphql-framework-for-spring-boot-by-netflix-37h3