快速入门:将数据 API 生成器与 NoSQL 配合使用

在本快速入门中,你将生成一组数据 API 生成器配置文件,以 Azure Cosmos DB for NoSQL 模拟器为目标。

先决条件

提示

或者,在已安装所有开发人员先决条件的 GitHub Codespaces 中打开本快速入门。 只需自带 Azure 订阅即可。 GitHub 帐户包括免费存储和核心小时数的权利。 有关详细信息,请参阅 GitHub 帐户包含的存储和核心小时数

在 GitHub Codespaces 中打开

安装数据 API 生成器 CLI

Microsoft.DataApiBuilder从 NuGet 安装包作为 .NET 工具。

  1. 使用 dotnet tool install 安装具有 --global 参数的Microsoft.DataApiBuilder最新版本。

    dotnet tool install --global Microsoft.DataApiBuilder
    

    注意

    如果包已安装,你将改用 dotnet tool update更新包。

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. 使用 --global 参数验证工具是否已安装dotnet tool list

    dotnet tool list --global
    

配置本地数据库

首先运行本地模拟器。 然后,可以使用示例数据为新容器设定种子。

  1. 从 Docker Hub 获取容器映像的最新副本mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

    docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
    
  2. 通过发布端口 8081 和端口范围 10250-10255 启动 docker 容器。

    docker run \
        --publish 8081:8081 \
        --publish 10250-10255:10250-10255 \
        --detach \
        mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
    
  3. 下载模拟器的自签名证书

    curl -k https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
    
  4. 使用适用于 Linux 的 Bash 步骤或适用于 Windows 的 PowerShell 步骤安装自签名证书。

    sudo cp ~/emulatorcert.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates
    
    certutil -f -addstore "Root" emulatorcert.crt
    
  5. 使用首选数据管理环境连接到本地数据库。 示例包括但不限于:Azure Data Studio适用于 Visual Studio Code 的 Azure 数据库扩展

    提示

    模拟器的默认连接字符串为 AccountEndpoint=https://localhost:8081;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;

  6. Create新的bookshelf数据库和authors容器。

  7. 使用此基本 JSON 数据为容器设定种子。

    [
      {
        "id": "01",
        "firstName": "Henry",
        "lastName": "Ross"
      },
      {
        "id": "02",
        "firstName": "Jacob",
        "middleName": "A.",
        "lastName": "Hancock"
      },
      {
        "id": "03",
        "firstName": "Sydney",
        "lastName": "Mattos"
      },
      {
        "id": "04",
        "firstName": "Jordan",
        "lastName": "Mitchell"
      },
      {
        "id": "05",
        "firstName": "Victoria",
        "lastName": "Burke"
      },
      {
        "id": "06",
        "firstName": "Vance",
        "lastName": "DeLeon"
      },
      {
        "id": "07",
        "firstName": "Reed",
        "lastName": "Flores"
      },
      {
        "id": "08",
        "firstName": "Felix",
        "lastName": "Henderson"
      },
      {
        "id": "09",
        "firstName": "Avery",
        "lastName": "Howard"
      },
      {
        "id": "10",
        "firstName": "Violet",
        "lastName": "Martinez"
      }
    ]
    

    提示

    用于设定数据种子的方法在很大程度上取决于数据管理工具。 对于 Azure Data Studio,可以将此 JSON 数组保存为 .json 文件,然后使用 导入 功能。

创建配置文件

使用 DAB CLI Create基线配置文件。 然后,使用当前凭据添加开发配置文件。

  1. Create一个名为 schema.graphql 的新文件,其中包含此架构内容。

    type Author @model {
      id: ID!
      firstName: String!
      middleName: String
      lastName: String!
    }
    
  2. 使用 dab initCreate典型的配置文件。 --connection-string使用模拟器的默认连接字符串添加 参数。

    dab init --database-type "cosmosdb_nosql" --host-mode "Development" --cosmosdb_nosql-database bookshelf --graphql-schema schema.graphql --connection-string "AccountEndpoint=https://localhost:8081;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==;"
    
  3. 使用 dab add添加 Author 实体。

    dab add Author --source "authors" --permissions "anonymous:*"
    

使用本地数据库测试 API

现在,启动数据 API 生成器工具,验证在开发过程中是否合并了配置文件。

  1. 使用 dab start 运行该工具并为实体创建 API 终结点。

    dab start
    
  2. 该工具的输出应包含用于导航到正在运行的 API 的地址。

          Successfully completed runtime initialization.
    info: Microsoft.Hosting.Lifetime[14]
          Now listening on: <http://localhost:5000>
    info: Microsoft.Hosting.Lifetime[0]
    

    提示

    在此示例中,应用程序在端口 5000 上运行localhost。 正在运行的应用程序可能具有不同的地址和端口。

  3. 导航到 并运行此操作,转到/graphqlGraphQL终结点。

    query {
      authors {
        items {
          id
          firstName
          lastName
        }
      }
    }
    

    提示

    在此示例中,URL 为 https://localhost:5000/graphql。 可以使用 Web 浏览器导航到此 URL。

后续步骤