Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten skapar du REST- och GraphQL-slutpunkter för en lokal SQL-databas med hjälp av Data API Builder (DAB). Välj databasmotorn för att komma igång.
Förutsättningar
- Docker(valfritt om du redan har en databas)
- .NET 8 (eller senare)
Installera CLI för Data API-builder
Installera paketet Microsoft.DataApiBuilder från NuGet som ett .NET verktyg.
Använd
dotnet tool installför att installera den senaste versionen avMicrosoft.DataApiBuildermed--globalargumentet .dotnet tool install --global Microsoft.DataApiBuilderAnmärkning
Om paketet redan är installerat uppdaterar du paketet i stället med .
dotnet tool updatedotnet tool update --global Microsoft.DataApiBuilderKontrollera att verktyget är installerat med
dotnet tool listgenom att använda argumentet--global.dotnet tool list --global
Hämta databasbilden
Tips/Råd
Har du redan en databas? Hoppa till Skapa och seeda databasen, kör SQL-skriptet för motorn och gå sedan vidare till Konfigurera data-API-byggare med din egen anslutningssträng.
Ladda ned Docker-avbildningen för databasmotorn. Det här steget kan ta några minuter beroende på din anslutningshastighet.
docker pull mcr.microsoft.com/mssql/server:2025-latest
Starta databasen
Kör en lokal databasinstans i 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
Tips/Råd
Om porten 1433 redan används (till exempel av en lokal SQL Server-installation) ändrar du --publish till en annan värdport som 1434:1433 och uppdaterar Server=localhost,1433 till Server=localhost,1434 i senare steg.
Kontrollera att databasmotorn är klar innan du kör nästa kommando.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "SELECT 1"
Om detta returnerar ett fel väntar du några sekunder och försöker igen.
Skapa och seeda databasen
Skapa en todos databas och tabell och lägg sedan till exempeldata. Om du använder Docker behövs ingen SQL-klient–docker exec kör kommandona direkt i containern. Om du använder en egen databas kör du SQL-skriptet i önskat verktyg.
Skapa databasen.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"Skapa tabellen och lägg till exempeldata.
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);"
Tips/Råd
Använder du din egen SQL Server? Kör det här skriptet direkt:
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);
Konfigurera data-API-byggare
Skapa en DAB-konfigurationsfil och lägg till en Todo-entitet .
Tips/Råd
Använder du en egen databas? Ersätt anslutningssträngen i dab init med din egen:
-
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>;
Initiera konfigurationen.
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;"Lägg till entiteten Todo .
dab add Todo --source "dbo.todos" --permissions "anonymous:*"
Filen dab-config.json bör nu se ut ungefär som i följande exempel:
{
"$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": [
"*"
]
}
]
}
}
}
Tips/Råd
Du kan hoppa över dab init kommandona och dab add och skapa dab-config.json filen direkt med det innehåll som visas här.
Starta API:et
Använd dab start för att köra verktyget och skapa API-slutpunkter för din entitet.
dab start
Utdata ska innehålla adressen till api:et som körs.
Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: <http://localhost:5000>
Tips/Råd
I det här exemplet körs programmet på localhost port 5000. Ditt program som körs kan ha en annan adress och port.
Testa API:et
Öppna webbläsaren och navigera till REST-slutpunkten för Todo-entiteten .
http://localhost:5000/api/TodoJSON-svaret bör innehålla alla tre att göra-objekt.
{ "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 } ] }Gå till Swagger-dokumentationssidan på
/swagger.http://localhost:5000/swagger
Skapa en webbapp
Visa dina todos i en webbläsare med en vanlig HTML-fil. Skapa en fil med namnet todo.html med antingen REST- eller GraphQL-slutpunkten.
<!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>
Öppna todo.html i webbläsaren. Sidan hämtar alla att göra-poster och renderar dem som en lista, med slutförda poster som visas som överstruken text.
Viktigt!
Med cors inställningen i konfigurationen kan den här HTML-filen – som öppnas från ditt lokala filsystem – anropa API:et. Utan den blockerar webbläsaren begäran.
Städa upp
Stoppa och ta bort Docker-containern när du är klar.
docker stop dab-mssql && docker rm dab-mssql