Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом кратком руководстве вы создадите конечные точки REST и GraphQL для локальной базы данных SQL с помощью построителя API данных (DAB). Выберите ядро СУБД, чтобы приступить к работе.
Необходимые условия
- Docker(необязательно, если у вас уже есть база данных)
- .NET 8 (или более поздней версии)
Установка интерфейса командной строки построителя API данных
Установите пакет Microsoft.DataApiBuilder из NuGet в качестве инструмента .NET.
Используйте
dotnet tool installдля установки последней версииMicrosoft.DataApiBuilder, используя аргумент--global.dotnet tool install --global Microsoft.DataApiBuilderЗамечание
Если пакет уже установлен, вместо этого обновите пакет, используя
dotnet tool update.dotnet tool update --global Microsoft.DataApiBuilderУбедитесь, что средство установлено с
dotnet tool listпомощью аргумента--global.dotnet tool list --global
Извлечение образа базы данных
Подсказка
У вас уже есть база данных? Перейдите к Созданию и заполнению базы данных, запустите SQL-скрипт для вашего движка, а затем перейдите к Настройке построителя API данных с помощью собственной строки подключения.
Скачайте образ Docker для ядра СУБД. Этот шаг может занять несколько минут в зависимости от скорости подключения.
docker pull mcr.microsoft.com/mssql/server:2025-latest
Запуск базы данных
Запустите локальный экземпляр базы данных в Docker.
docker run --name dab-mssql --env "ACCEPT_EULA=Y" --env "MSSQL_SA_PASSWORD=P@ssw0rd1" --publish 1433:1433 --detach mcr.microsoft.com/mssql/server:2025-latest
Подсказка
Если порт 1433 уже используется (например, локальной инсталляцией SQL Server), измените --publish на другой порт узла, например 1434:1433, и обновите Server=localhost,1433 на Server=localhost,1434 в дальнейших шагах.
Убедитесь, что ядро СУБД готово перед выполнением следующей команды.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "SELECT 1"
Если это возвращает ошибку, подождите несколько секунд и повторите попытку.
Создание и заполнение данными базы данных
Создайте базу данных и таблицу todos , а затем добавьте примеры данных. Если вы используете Docker, клиент SQL не требуется,docker exec выполняет команды непосредственно внутри контейнера. Если вы используете собственную базу данных, запустите скрипт SQL в предпочтительном средстве.
Создайте базу данных.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"Создайте таблицу и добавьте примеры данных.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -d todos -Q "CREATE TABLE dbo.todos (id int PRIMARY KEY, title nvarchar(100) NOT NULL, completed bit NOT NULL DEFAULT 0); INSERT INTO dbo.todos VALUES (1, 'Walk the dog', 0), (2, 'Feed the fish', 0), (3, 'Comb the cat', 1);"
Подсказка
Использование собственного SQL Server? Запустите этот скрипт напрямую:
CREATE DATABASE todos;
GO
USE todos;
GO
CREATE TABLE dbo.todos (id int PRIMARY KEY, title nvarchar(100) NOT NULL, completed bit NOT NULL DEFAULT 0);
INSERT INTO dbo.todos VALUES (1, 'Walk the dog', 0), (2, 'Feed the fish', 0), (3, 'Comb the cat', 1);
Настройка построителя API данных
Создайте файл конфигурации DAB и добавьте сущность Todo .
Подсказка
Использование собственной базы данных? Замените строку dab init подключения собственной:
-
SQL Server:
Server=<host>,<port>;Database=todos;User Id=<user>;Password=<password>;TrustServerCertificate=true;Encrypt=true; -
Postgresql:
Host=<host>;Port=5432;Database=todos;User ID=<user>;Password=<password>; -
Mysql:
Server=<host>;Port=3306;Database=todos;User=<user>;Password=<password>;
Инициализация конфигурации.
dab init --database-type "mssql" --host-mode "Development" --connection-string "Server=localhost,1433;Database=todos;User Id=sa;Password=P@ssw0rd1;TrustServerCertificate=true;Encrypt=true;"Добавьте сущность Todo .
dab add Todo --source "dbo.todos" --permissions "anonymous:*"
Теперь файл dab-config.json должен выглядеть примерно так:
{
"$schema": "https://github.com/Azure/data-api-builder/releases/download/vmajor.minor.patch/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "Server=localhost,1433;Database=todos;User Id=sa;Password=P@ssw0rd1;TrustServerCertificate=true;Encrypt=true;"
},
"runtime": {
"rest": {
"enabled": true
},
"graphql": {
"enabled": true
},
"host": {
"mode": "development",
"cors": {
"origins": ["*"]
}
}
},
"entities": {
"Todo": {
"source": "dbo.todos",
"permissions": [
{
"role": "anonymous",
"actions": [
"*"
]
}
]
}
}
}
Подсказка
Вы можете пропустить команду dab init и dab add, а также создать этот файл dab-config.json с содержимым, показанным здесь, непосредственно.
Запуск API
Используйте dab start для запуска инструмента и создания конечных точек API для вашей сущности.
dab start
Выходные данные должны содержать адрес запущенного API.
Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: <http://localhost:5000>
Подсказка
В этом примере приложение выполняется через localhost порт 5000. Работающее приложение может иметь другой адрес и порт.
Проверка API
Откройте браузер и перейдите к конечной точке REST для сущности Todo .
http://localhost:5000/api/TodoОтвет JSON должен включать все три элемента "todo".
{ "value": [ { "id": 1, "title": "Walk the dog", "completed": false }, { "id": 2, "title": "Feed the fish", "completed": false }, { "id": 3, "title": "Comb the cat", "completed": true } ] }Перейдите на страницу документации Swagger по адресу
/swagger.http://localhost:5000/swagger
Создание веб-приложения
Отображение тодосов в браузере с помощью обычного HTML-файла. Создайте файл с именем todo.html с помощью конечной точки REST или GraphQL.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Todo App</title>
<style>
body { font-family: sans-serif; max-width: 400px; margin: 2rem auto; }
li.done { text-decoration: line-through; color: gray; }
#error { color: red; }
</style>
</head>
<body>
<h1>Todos</h1>
<ul id="list"></ul>
<p id="error"></p>
<script>
fetch('http://localhost:5000/api/Todo')
.then(r => r.json())
.then(data => {
const ul = document.getElementById('list');
data.value.forEach(todo => {
const li = document.createElement('li');
li.textContent = todo.title;
if (todo.completed) li.className = 'done';
ul.appendChild(li);
});
})
.catch(() => {
document.getElementById('error').textContent =
'Could not reach the API. Make sure DAB is running on http://localhost:5000.';
});
</script>
</body>
</html>
Откройте todo.html в браузере. Страница извлекает все задачи и отображает их в виде списка, при этом завершенные задачи показаны зачеркнутыми.
Это важно
Параметр cors в конфигурации позволяет этому HTML-файлу , открытому из локальной файловой системы, вызывать API. Без него браузер блокирует запрос.
Очистка
Остановите и удалите контейнер Docker после завершения.
docker stop dab-mssql && docker rm dab-mssql