什么是 Azure 数据库的数据 API 生成器?

数据 API 生成器(DAB)是基于配置的开源引擎,可为受支持的数据库(如 SQL Server、Azure Cosmos DB、PostgreSQL 和 MySQL)创建 REST 和 GraphQL API。 DAB 在任何云或本地运行,并且可以免费使用。 使用单个 JSON 文件对其进行配置,因此无需编写自定义 API 即可公开数据库对象。

数据 API 生成器吉祥物的插图,戴着建筑帽子。

数据 API 生成器替代了大多数执行泛型 CRUD(创建、读取、更新、删除)操作的自定义数据 API。 DAB 独立于语言、技术和框架。 它不需要应用程序代码和单个配置文件。 最棒的是,它确实是免费的,没有高端版本,可以在任何地方无状态地运行。

终结点支持

数据 API 构建器自带支持 REST 和 GraphQL 端点,并能同时处理这两者。 使用版本 1.7 及更高版本,DAB 还支持具有相同丰富功能的 代理应用的模型上下文协议(MCP )。

数据 API 生成器中的终结点支持关系图。

DAB 包括跨平台 CLI、OpenTelemetry 和健康检查。 它还支持适用于 REST 端点的 OpenAPI 和 Swagger,以及适用于 GraphQL 端点的 Nitro(过去称为香蕉蛋糕流行)。

小窍门

开箱即用的终结点功能:

  • 数据分页
  • 数据筛选
  • 数据排序
  • 列选择
  • 存储过程
  • 关系导航

数据库支持

数据 API 生成器 (DAB) 同时支持多个后端数据源,包括关系数据源和 NoSQL 源。 支持的数据库包括 SQL Server 和 Azure SQL、Azure Cosmos DB、PostgreSQL 和 MySQL。 有关数据库的详细信息和限制,请参阅 特定于数据库的功能

数据 API 生成器支持的数据库关系图。

数据 API 生成器可以同时连接到多个数据源。 可以将关系源与 JSON 或文档数据库相结合,并混合云数据库和本地数据库。 这种灵活性使 DAB 能够支持从简单设置到复杂部署拓扑等所有内容。

安全性

可以使用 EasyAuth、Microsoft Entra Identity 或企业选择的任何 JSON Web 令牌(JWT)服务器来保护其无状态且对 Docker 友好的容器。 它具有灵活的策略引擎、精细的安全控制,并自动将声明数据传递到 SQL 会话上下文。

数据 API 生成器的身份验证选项示意图。

建筑

此关系图分解了数据 API 生成器的所有组件之间的关系。 它从数据库架构开始,该架构定义表、视图和存储过程。 DAB 配置文件将这些对象投影到抽象层。 在该层中,你将实体命名、选择或别名字段、定义关系并应用权限。 在运行时,数据 API 生成器读取此配置以生成一致的 API 图面,并通过 REST 和 GraphQL 终结点公开相同的实体模型。 这种分离使你可以独立地演化数据库,同时为应用程序和客户端保持一个稳定、安全的契约。

数据 API 生成器体系结构的关系图。

使用单个 JSON 文件配置数据 API 生成器。 在文件中,你需要定义:

  • 服务器如何连接到数据源
  • 公开哪些表、视图和存储过程
  • 实体的形状、命名和相关方式
  • 允许哪些角色访问每个操作

部署选项

数据 API 生成器的容器托管选项示意图。

DAB 适用于 Azure 容器应用、Azure 容器实例、Azure Kubernetes 服务和用于容器的 Azure Web 应用。 DAB 适用于这些服务,同时完全支持自定义本地部署。

集成和功能

DAB 还与 Application Insights 无缝集成。 配置文件可以反映数据库中的关系,也可以定义支持热重载的新虚拟配置文件。 GraphQL 终结点允许单个事务中的多个嵌套 Create 语句,而 REST 终结点具有内存中缓存和对类似 OData 的查询字符串关键字的丰富支持。

更少的代码,更多功能

DAB 可以帮助减少自定义 API 代码、缩短 CI/CD 管道,并引入通常为最大的开发团队保留的标准和高级功能。 它的安全性和功能丰富,同时保持令人难以置信的简单、可缩放和可观测性。

开源

数据 API 生成器是开放源代码,并且根据 MIT 许可证发布。 存储库在 Azure/data-api-builder 的 GitHub 上提供。