通过


数据 API 生成器(预览版)

Visual Studio Code 的 MSSQL 扩展包括用于 数据 API 生成器的集成 UI,因此无需编写配置文件或离开 Visual Studio Code 即可为 SQL 数据库表创建 REST、GraphQL 和 MCP 终结点。 你可以选择要公开哪些表、配置 CRUD 权限、选择 API 类型、预览生成的配置,以及部署由数据 API 生成器提供支持的本地后端,所有这些表都来自可视化界面。

Visual Studio Code 中带有实体列表和 CRUD 复选框的数据 API 生成器 UI 的屏幕截图。

小窍门

数据 API 生成器目前处于预览状态,可能会根据反馈进行更改。 在 GitHub 讨论 中加入社区,分享想法或报告问题。

重要

此功能具有已知限制,包括对容器部署和受限数据类型兼容性的仅限 SQL 身份验证的支持。 在部署之前查看 已知限制已知问题

功能

数据 API 生成器集成提供以下功能:

  • 选择数据库实体(表)以作为 API 终结点公开,这些终结点按架构进行组织并具有可折叠分组。
  • 为每个实体单独配置创建、读取、更新和删除(CRUD)权限。
  • 选择要生成的 API 类型:REST、GraphQL、MCP 或任何组合。
  • 配置高级实体设置,包括自定义 REST 路径、自定义 GraphQL 类型名称和授权角色。
  • 在只读定义面板中预览生成的数据 API 生成器 JSON 配置。
  • 使用自动先决条件检查在本地部署数据 API 生成器作为 Docker 容器。
  • 使用内置的简单浏览器直接在 Visual Studio Code 中测试正在运行的 API。
  • 使用 GitHub Copilot 聊天通过自然语言提示来配置实体。

先决条件

在使用数据 API 生成器之前,请确保满足以下要求:

开放数据 API 生成器

可以从两个入口点打开数据 API 生成器配置视图:

  • 对象资源管理器中:右键单击数据库节点并选择“生成数据 API(预览版)...”。

    Visual Studio Code 中包含实体列表和 CRUD 复选框的数据 API 生成器配置视图的屏幕截图。

  • 从架构设计器:选择 “设计 API ”按钮(工具栏右上角的按钮),或选择左侧面板中的 “后端 ”图标。

    架构设计器工具栏中“设计 API”按钮和“后端”图标的屏幕截图。

数据 API 生成器配置视图随即打开,显示数据库实体、API 类型选项和配置控件。

选择实体

实体选择视图列出已连接数据库中的所有表,按架构分组。

  • 每个架构行都是可折叠的,并显示一个计数徽章,指示已启用的实体数量(例如,“3/5”)。
  • 选中架构级别复选框可切换该架构中的所有实体。 该复选框支持三态选择:所有、无或混合。
  • 每个实体行显示:启用复选框、实体名称、源表、CRUD 复选框和设置按钮。
  • 禁用实体时,其行会变灰,同时会禁用 CRUD 复选框和设置按钮。

使用顶部的 筛选器框 按名称、架构或源表搜索实体。 筛选器不区分大小写,启用的计数将根据筛选结果进行更新。

实体筛选器框的屏幕截图,其中搜索词筛选实体列表。

配置权限和 API 类型

CRUD 权限

为每个实体切换单独的 “创建”、“ 读取”、“ 更新”和 “删除 ”复选框。 标头级 CRUD 复选框可切换所有已启用实体的操作并支持三态选择。

API 类型选择

在配置视图顶部,选择要生成的 API 类型:

  • REST API:使用 Swagger UI 生成 REST 终结点以进行测试。
  • GraphQL:使用 Nitro GraphQL 操场生成 GraphQL 终结点。
  • MCP预览版):生成模型上下文协议终结点。
  • 全部:选择或取消选择所有 API 类型。

选择至少一种 API 类型。

数据 API 生成器配置视图顶部的 REST API、GraphQL、MCP 和 All 复选框的屏幕截图。

高级实体配置

选择实体行上的齿轮图标以打开 “高级实体配置 ”对话框,可在其中配置:

  • 实体名称:API 路由和响应中使用的名称(默认为表名)。
  • 授权角色:在 匿名 (无需身份验证)和 经过身份验证 (需要用户身份验证)之间切换。
  • 自定义 REST 路径:默认 api/entityName 路径的可选替代。
  • 自定义 GraphQL 类型:默认 GraphQL 类型名称的可选替代。

选择 “应用更改 ”以保存配置,或 选择“取消” 以放弃。

“高级实体配置”对话框的屏幕截图,其中显示了“实体名称”、“授权角色”、“自定义 REST 路径”和“自定义 GraphQL 类型”字段。

预览配置

选择工具栏中的 “视图配置 ”按钮,打开配置视图底部的 “定义 ”面板。 此面板以只读格式显示生成的数据 API 生成器 JSON 配置文件。

定义面板:

  • 反映当前实体选择、API 类型和高级设置。
  • 与 UI 和 GitHub Copilot 聊天保持同步:在任一位置所做的更改会立即更新预览。
  • 仅在配置输出中包含已启用的实体。
  • 基于所选 API 类型显示 REST、GraphQL 和 MCP 运行时部分。

选择“ 在编辑器中打开 ”,在完整的 Visual Studio Code 编辑器选项卡中查看配置。选择 “复制 ”,将配置复制到剪贴板。

“定义”面板的屏幕截图,其中显示了生成的数据 API 生成器 JSON 配置,其中包含“在编辑器中打开”和“复制”按钮。

使用 Docker 在本地部署

数据 API 生成器部署为本地 Docker 容器。 部署向导将指导你完成此过程:

  1. 选择工具栏中的 “部署 ”按钮。

  2. 此时会打开 “部署 DAB 容器 ”对话框,描述本地容器部署。 选择“下一步”。

    “部署 DAB 容器”对话框的屏幕截图,其中显示了本地容器部署说明。

  3. Docker就绪准备屏幕按顺序运行前置条件检查:

    • 检查 Docker 安装:验证是否已在系统上安装 Docker。
    • 启动 Docker Desktop:确保 Docker Desktop 正在运行。
    • 检查 Docker 引擎:验证 Docker 引擎是否已准备就绪。

    Docker 先决条件检查按顺序运行的屏幕截图。

    选择 “下一步 ”,在完成所有检查后继续。

    Docker 先决条件检查成功完成的屏幕截图。

  4. 此时会显示 “容器设置” 屏幕:

    • 容器名称:Docker 容器的可选名称(提供了自动生成的默认值)。
    • 端口:要公开 API 的端口(默认值: 5000)。
    • 容器重用活动数据库连接的连接字符串。

    选择“ 创建容器”。

    “容器设置”屏幕的屏幕截图,其中显示了“容器名称和端口”字段。

  5. 部署按顺序执行三个步骤:拉取映像、启动容器和检查就绪情况。

    显示容器创建步骤的部署进度的屏幕截图。

  6. 成功部署后,向导会显示每个已启用 API 类型的终结点 URL:

    API 类型 终结点 Action
    REST http://localhost:{port}/api 查看 Swagger 打开 Swagger UI
    GraphQL http://localhost:{port}/graphql Nitro 打开 GraphQL 沙盒
    MCP http://localhost:{port}/mcp 添加到 VS Code 会将 MCP 服务器配置写入 .vscode/mcp.json

    选择任何链接以在 Visual Studio Code 内置简单浏览器中打开测试界面。

    部署完整屏幕的屏幕截图,其中显示了数据 API 生成器容器正在运行的终结点 URL。

    以下示例演示了用于直接在 Visual Studio Code 中测试 REST 终结点的 Swagger UI:

    Visual Studio Code Simple Browser 中 REST 终结点的 Swagger UI 的屏幕截图。

    以下示例显示了用于测试 GraphQL 查询和变更的 Nitro GraphQL 沙盒:

    Visual Studio Code Simple Browser 中 Nitro GraphQL 操场的屏幕截图。

测试正在运行的 API

部署后,可以使用 Visual Studio Code 内置简单浏览器直接从部署完成对话框测试 API。

REST API

选择 “查看 Swagger ”以打开 Swagger UI,这是用于浏览和测试 REST 终结点的交互式可视化界面。 可以浏览可用的实体、查看请求和响应架构,并直接执行 API 调用。

数据 API 生成器为每个已启用的实体生成以下 REST 终结点:

方法 终结点 说明
GET /api/{entity} 列出实体的所有记录
GET /api/{entity}/{primaryKey}/{value} 按主键获取单个记录
POST /api/{entity} 创建新记录
PUT /api/{entity}/{primaryKey}/{value} 替换现有记录
PATCH /api/{entity}/{primaryKey}/{value} 更新记录上的特定字段
DELETE /api/{entity}/{primaryKey}/{value} 删除记录

有关 REST 终结点的详细信息,请参阅 数据 API 生成器 REST API

GraphQL

选择 Nitro 以打开 Nitro GraphQL 操场,可在其中以交互方式编写和测试 GraphQL 查询和突变。

有关 GraphQL 终结点的详细信息,请参阅 数据 API 生成器 GraphQL API

MCP

选择添加到 VS Code以将 MCP 服务器配置写入到.vscode/mcp.json。 此配置使数据 API 生成器终结点可用作 Visual Studio Code 中的 MCP 服务器。 然后,GitHub Copilot 等 AI 工具可以通过数据 API 生成器 API 与数据库交互。

有关 Visual Studio Code 中的 MCP 的详细信息,请参阅 Visual Studio Code 中的“使用 MCP 服务器”。

终端测试

还可以从终端测试终结点:

REST API

从特定实体获取所有记录:

curl http://localhost:{port}/api/{entityName}

创建新记录(如果启用了创建权限):

curl -X POST http://localhost:{port}/api/{entityName} \
  -H "Content-Type: application/json" \
  -d '{"Column1": "Value1", "Column2": "Value2"}'

GraphQL

curl -X POST http://localhost:{port}/graphql \
  -H "Content-Type: application/json" \
  -d '{"query": "{ {entityName} { items { Column1 Column2 } } }"}'

小窍门

{port} 替换为您在部署期间配置的端口(默认值:5000)。

GitHub Copilot 集成

对于喜欢自然语言的开发人员,GitHub Copilot 内置于数据 API 生成器体验中。 选择工具栏中的 “聊天 ”按钮以打开限定为数据 API 生成器配置上下文的 GitHub Copilot 聊天会话。 GitHub Copilot 和 UI 保持同步:通过聊天所做的更改立即反映在 UI 中,反之亦然。

下面是一些提示示例:

  • "Enable all SalesLT entities for read operations"
  • "Expose only the Customer and Product tables with full CRUD permissions"
  • "Set all entities in the dbo schema to read-only"
  • "Disable the BuildVersion and ErrorLog entities"
  • "Can you also enable MCP for the Data API builder API?"

以下示例演示 GitHub Copilot 通过聊天提示启用实体和配置 CRUD 权限:

GitHub Copilot 在数据 API 生成器聊天中通过自然语言提示启用实体和设置 CRUD 权限的屏幕截图。

以下示例演示 GitHub Copilot 如何为数据 API 构建器配置启用 MCP 终结点:

GitHub Copilot 在数据 API 生成器聊天中通过自然语言提示启用 MCP 终结点的屏幕截图。

注释

GitHub Copilot 集成需要安装并登录 GitHub Copilot 和 GitHub Copilot Chat 扩展。 有关设置说明,请参阅 “设置 GitHub Copilot”。

已知的限制

  • 仅表:配置 UI 仅支持表。 视图和存储过程目前在设计器中不可用。
  • 需要 Docker Desktop:本地部署要求安装并运行 Docker Desktop。
  • 仅限 SQL 身份验证:本地 Docker 容器不支持Microsoft Entra ID 身份验证方法,例如 ActiveDirectoryInteractive,因为容器环境无法打开交互式登录流的浏览器。 如果当前连接使用不受支持的身份验证类型,扩展将显示通知。
  • Microsoft Fabric 中的 SQL 数据库不受支持:Microsoft Fabric 中的 SQL 数据库只需要 Microsoft Entra 身份验证,不支持 SQL 身份验证。 由于本地容器部署需要 SQL 身份验证,因此在 Fabric 中针对 SQL 数据库进行部署并不是可行的方案。
  • 必需主键:通过数据 API 生成器公开的每个表实体都必须在数据库级别定义主键约束。 没有主键的表会导致数据 API 生成器引擎在启动时失败。
  • 应查看 AI 生成的输出:GitHub Copilot 可能会生成不正确的或欠佳的配置。 在部署之前,请始终查看生成的配置。

已知问题

  • 不支持的 SQL Server 数据类型:数据 API 生成器无法序列化某些 SQL Server 数据类型。 包含不受支持的类型的列的表可能会导致引擎在启动时失败。 不支持的类型包括geography、、geometryhierarchyidrowversionsql_variantxml。 扩展用警告图标标记受影响的元素,并阻止对它们的部署选择。 有关数据类型支持的最新信息,请参阅 GitHub 问题 #3181
  • 容器部署不支持交互式Microsoft Entra ID 身份验证:数据 API 生成器容器无法执行交互式Microsoft Entra 身份验证。 使用交互式Microsoft Entra ID 方法的连接被通知阻止。 有关详细信息,请参阅 GitHub 问题 #3246
  • MCP 处于预览状态:数据 API 生成器 MCP 体验目前处于预览状态。 有关详细信息,请参阅 数据 API 生成器 MCP 预览版

反馈和支持

如果你有想法、反馈或想与社区互动,请加入讨论。https://aka.ms/vscode-mssql-discussions 若要报告 bug,请访问 https://aka.ms/vscode-mssql-bug。 若要请求新功能,请转到 https://aka.ms/vscode-mssql-feature-request