Dela via


Snabbstart: Använda Data API Builder med SQL

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

Installera CLI för Data API-builder

Installera paketet Microsoft.DataApiBuilder från NuGet som ett .NET verktyg.

  1. Använd dotnet tool install för att installera den senaste versionen av Microsoft.DataApiBuilder med --global argumentet .

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Anmärkning

    Om paketet redan är installerat uppdaterar du paketet i stället med .dotnet tool update

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Kontrollera att verktyget är installerat med dotnet tool list genom 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.

  1. Skapa databasen.

    docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"
    
  2. 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>;
  1. 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;"
    
  2. 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

  1. Öppna webbläsaren och navigera till REST-slutpunkten för Todo-entiteten .

    http://localhost:5000/api/Todo
    
  2. JSON-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 }
      ]
    }
    
  3. 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

Nästa steg