将配置文件环境与数据 API 生成器配合使用
本指南逐步讲解使用配置文件面向开发环境的步骤。 最终结果配置文件应足够灵活,以便将来只需进行少量更改即可添加生产数据库配置。
先决条件
- 现有 SQL 数据库。
- 数据管理客户端
- 如果未安装客户端, 请安装 Azure Data Studio
- 数据 API 生成器 CLI。 安装 CLI
Create SQL 表和数据
Create一个包含虚构数据的表,用于此示例方案。
使用首选客户端或工具连接到 SQL Server 和数据库。 示例包括但不限于:SQL Server Management Studio、Azure Data Studio 和适用于 Visual Studio Code 的 SQL Server 扩展。
使用 和
name
列Create名为 的Books
id
表。DROP TABLE IF EXISTS dbo.Books; CREATE TABLE dbo.Books ( id int NOT NULL PRIMARY KEY, title nvarchar(1000) NOT NULL, [year] int null, [pages] int null ); GO
将四个示例书籍行插入表中
Books
。INSERT INTO dbo.Books VALUES (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326), (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444), (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528), (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506) GO
使用简单
SELECT *
查询测试数据。SELECT * FROM dbo.Books
Create基本配置文件
使用 DAB CLI Create基线配置文件。
使用
dab init
Create典型的配置文件。dab init --database-type "mssql" --host-mode "Development"
使用
dab add
添加 Book 实体。dab add Book --source "dbo.Books" --permissions "anonymous:*"
观察当前 dab-config.json 配置文件。 该文件应包含 API 的基线实现,其中包含单个实体、REST API 终结点和GraphQL终结点。
{ "$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json", "data-source": { "database-type": "mssql", "connection-string": "", "options": { "set-session-context": false } }, "runtime": { "rest": { "enabled": true, "path": "/api", "request-body-strict": true }, "graphql": { "enabled": true, "path": "/graphql", "allow-introspection": true }, "host": { "cors": { "origins": [], "allow-credentials": false }, "authentication": { "provider": "StaticWebApps" }, "mode": "development" } }, "entities": { "Book": { "source": { "object": "dbo.Books", "type": "table" }, "graphql": { "enabled": true, "type": { "singular": "Book", "plural": "Books" } }, "rest": { "enabled": true }, "permissions": [ { "role": "anonymous", "actions": [ { "action": "*" } ] } ] } } }
Create环境变量文件
现在,添加一个环境文件来存储 DAB 的环境变量。
- Create DAB CLI 配置文件所在的目录中名为
.env
的文件。
注意
文件名 .env
(如 .gitignore
和 .editorconfig
文件)没有文件名,只有文件扩展名。 名称不区分大小写,但约定为小写。
DAB_ENVIRONMENT
添加值为 的Development
环境变量。 此外,使用数据库连接字符串添加SQL_DOCKER_CONNECTION_STRING
环境变量。SQL_DOCKER_CONNECTION_STRING=<connection-string> DAB_ENVIRONMENT=Development
Create环境配置文件
最后,添加一个开发配置文件,其中包含当前配置与所需环境配置之间的增量。
创建
dab-config.Development.json
文件。 添加以下内容,以使用@env()
函数在开发环境中设置值connection-string
。{ "$schema": "<https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json>", "data-source": { "database-type": "mssql", "connection-string": "@env('SQL_DOCKER_CONNECTION_STRING')" } }
保存 对 .env、 dab-config.json 和 dab-config 的更改。Development.json 文件。
测试设置
使用
dab start
验证工具按预期启动。dab start
该工具的输出应包含用于导航到正在运行的 API 的地址。
Successfully completed runtime initialization. info: Microsoft.Hosting.Lifetime[14] Now listening on: <http://localhost:5000> info: Microsoft.Hosting.Lifetime[0]
提示
在此示例中,应用程序在端口 5000 处
localhost
运行。 正在运行的应用程序可能具有不同的地址和端口。首先,通过向
/api/Book
发出 GET 请求来手动尝试 API。提示
在此示例中,URL 为
https://localhost:5000/api/Book
。 可以使用 Web 浏览器导航到此 URL。接下来,导航到 处
/swagger
的 Swagger 文档页。提示
在此示例中,URL 为
<https://localhost:5000/swagger
。 同样,可以使用 Web 浏览器导航到此 URL。最后,通过导航到
/graphql
并运行此操作来尝试GraphQL终结点。query { books(filter: { pages: { lt: 500 } }) { items { id title year pages } } }
提示
在此示例中,URL 为
https://localhost:5000/graphql
。 同样,可以使用 Web 浏览器导航到此 URL。