Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In questa guida introduttiva vengono creati endpoint REST e GraphQL per un database SQL locale usando il generatore di API dati (DAB). Scegliere il motore di database per iniziare.
Prerequisiti
- Docker(facoltativo se si dispone già di un database)
- .NET 8 (o versione successiva)
Installare il CLI di Data API Builder
Installare il pacchetto Microsoft.DataApiBuilder da NuGet come strumento di .NET.
Usa
dotnet tool installper installare la versione più recente diMicrosoft.DataApiBuildercon l'argomento--global.dotnet tool install --global Microsoft.DataApiBuilderAnnotazioni
Se il pacchetto è già installato, aggiornare invece il pacchetto usando
dotnet tool update.dotnet tool update --global Microsoft.DataApiBuilderVerifica che lo strumento sia installato usando
dotnet tool listcon l'argomento--global.dotnet tool list --global
Scaricare l'immagine del database
Suggerimento
Si dispone già di un database? Passare a Creare ed eseguire il seeding del database, eseguire lo script SQL per il motore e quindi passare a Configurare il generatore di API dati con la propria stringa di connessione.
Scaricare l'immagine Docker per il motore di database. Questo passaggio può richiedere alcuni minuti a seconda della velocità di connessione.
docker pull mcr.microsoft.com/mssql/server:2025-latest
Avviare il database
Eseguire un'istanza locale del database in 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
Suggerimento
Se la porta 1433 è già in uso (ad esempio, da un'installazione locale di SQL Server), passare --publish a una porta host diversa come 1434:1433 e aggiornare Server=localhost,1433 in Server=localhost,1434 nei passaggi successivi.
Verificare che il motore di database sia pronto prima di eseguire il comando successivo.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "SELECT 1"
Se viene restituito un errore, attendere alcuni secondi e riprovare.
Creare ed eseguire il seeding del database
Creare un database e una todos tabella, quindi aggiungere dati di esempio. Se si usa Docker, non è necessario alcun client SQL.docker exec Esegue i comandi direttamente all'interno del contenitore. Se si usa il proprio database, eseguire lo script SQL nello strumento preferito.
Creare il database.
docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"Creare la tabella e aggiungere dati di esempio.
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);"
Suggerimento
Uso di SQL Server personale? Eseguire direttamente questo script:
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);
Configurare il generatore di API dati
Creare un file di configurazione DAB e aggiungere un'entità Todo .
Suggerimento
Utilizzo del proprio database? Sostituire la stringa di connessione in dab init con la propria:
-
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>;
Inizializzare la configurazione.
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;"Aggiungere l'entità Todo .
dab add Todo --source "dbo.todos" --permissions "anonymous:*"
Il dab-config.json file dovrebbe ora essere simile all'esempio seguente:
{
"$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": [
"*"
]
}
]
}
}
}
Suggerimento
È possibile ignorare i dab init comandi e dab add e creare il dab-config.json file direttamente con il contenuto illustrato qui.
Avviare l'API
Usare dab start per eseguire lo strumento e creare endpoint API per l'entità.
dab start
L'output deve includere l'indirizzo dell'API in esecuzione.
Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: <http://localhost:5000>
Suggerimento
In questo esempio l'applicazione viene eseguita sulla localhost porta 5000. L'applicazione in esecuzione può avere un indirizzo e una porta diversi.
Testare l'API
Aprire il browser e passare all'endpoint REST per l'entità Todo .
http://localhost:5000/api/TodoLa risposta JSON deve includere tutti e tre gli elementi 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 } ] }Passare alla pagina della documentazione di Swagger all'indirizzo
/swagger.http://localhost:5000/swagger
Creare un'app Web
Visualizzare attività in un browser usando un normale file HTML. Creare un file denominato todo.html usando l'endpoint REST o 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>
Aprire todo.html nel browser. La pagina recupera tutte le attività da fare e viene eseguito il rendering come elenco, con gli elementi completati visualizzati in formato barrato.
Importante
L'impostazione cors nella configurazione consente a questo file HTML, aperto dal file system locale, di chiamare l'API. Senza di esso, il browser blocca la richiesta.
Pulizia
Ferma e rimuovi il container Docker al termine.
docker stop dab-mssql && docker rm dab-mssql