Hızlı Başlangıç: SQL ile Veri API oluşturucusu kullanma

Bu hızlı başlangıçta, Veri API oluşturucusu (DAB) kullanarak yerel sql veritabanı için REST ve GraphQL uç noktaları oluşturacaksınız. Başlamak için veritabanı altyapınızı seçin.

Önkoşullar

Veri API'sini oluşturucu CLI'yi yükleme

NuGet'ten Microsoft.DataApiBuilder paketini .NET aracı olarak yükleyin.

  1. En son sürümünü dotnet tool install bağımsız değişkeniyle yüklemek için Microsoft.DataApiBuilder öğesini --global kullanın.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Uyarı

    Paket zaten yüklüyse, yerine kullanarak dotnet tool updatepaketi güncelleştirin.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. dotnet tool list aracının, --global bağımsız değişkeniyle yüklü olduğunu doğrulayın.

    dotnet tool list --global
    

Veritabanı görüntüsünü çekme

Tavsiye

Zaten bir veritabanınız mı var? Veritabanını oluşturma ve başlangıç verilerini ekleme'ye atlayın, altyapınız için SQL betiğini çalıştırın, ardından kendi bağlantı dizeğinizle Data API yapılandırıcısını ayarlamak için ilerleyin.

Veritabanı altyapınız için Docker görüntüsünü indirin. Bu adım, bağlantı hızınıza bağlı olarak birkaç dakika sürebilir.

docker pull mcr.microsoft.com/mssql/server:2025-latest

Veritabanını başlatma

Docker'da yerel bir veritabanı örneği çalıştırın.

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

Tavsiye

Bağlantı noktası 1433 zaten kullanılıyorsa (örneğin, yerel bir SQL Server yüklemesi tarafından), --publish'i 1434:1433 gibi farklı bir ana bilgisayar bağlantı noktasına değiştirin ve sonraki adımlarda Server=localhost,1433Server=localhost,1434 olarak güncelleyin.

Sonraki komutu çalıştırmadan önce veritabanı altyapısının hazır olduğunu doğrulayın.

docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "SELECT 1"

Bu bir hata döndürürse, birkaç saniye bekleyip yeniden deneyin.

Veritabanını oluşturma ve veri ekleme

Veritabanı todos ve tablo oluşturup örnek veriler ekleyin. Docker kullanıyorsanız sql istemcisi gerekmez;docker exec komutları doğrudan kapsayıcının içinde çalıştırır. Kendi veritabanınızı kullanıyorsanız sql betiğini tercih ettiğiniz araçta çalıştırın.

  1. Veritabanını oluşturun.

    docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"
    
  2. Tabloyu oluşturun ve örnek veriler ekleyin.

    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);"
    

Tavsiye

Kendi SQL Server'ınızı mı kullanıyorsunuz? Bu betiği doğrudan çalıştırın:

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);

Veri API'si oluşturucusunu yapılandırma

BIR DAB yapılandırma dosyası oluşturun ve bir Todo varlığı ekleyin.

Tavsiye

Kendi veritabanınızı mı kullanıyorsunuz? içindeki dab init bağlantı dizesini kendi bağlantı dizenizle değiştirin:

  • 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. Yapılandırmayı başlatın.

    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. Todo varlığını ekleyin.

    dab add Todo --source "dbo.todos" --permissions "anonymous:*"
    

Dosyanız dab-config.json artık aşağıdaki örneğe benzer görünmelidir:

{
  "$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": [
            "*"
          ]
        }
      ]
    }
  }
}

Tavsiye

dab init ve dab add komutlarını atlayabilir ve dab-config.json dosyasını burada gösterilen içerikle doğrudan oluşturabilirsiniz.

API'yi başlatma

Aracı çalıştırmak ve varlığınız için API uç noktaları oluşturmak için kullanın dab start .

dab start

Çıktı, çalışan API'nin adresini içermelidir.

      Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: <http://localhost:5000>

Tavsiye

Bu örnekte, uygulama localhost numaralı bağlantı noktasında çalışıyor. Çalışan uygulamanızın farklı bir adresi ve bağlantı noktası olabilir.

API’yi test etme

  1. Tarayıcınızı açın ve Todo varlığının REST uç noktasına gidin.

    http://localhost:5000/api/Todo
    
  2. JSON yanıtı üç yapılacaklar öğesini de içermelidir.

    {
      "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. konumundaki /swaggerSwagger belgeleri sayfasına gidin.

    http://localhost:5000/swagger
    

Web uygulaması oluşturma

Todos'unuzu düz bir HTML dosyası kullanarak tarayıcıda görüntüleyin. REST veya GraphQL uç noktasını kullanarak adlı todo.html bir dosya oluşturun.

<!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>

Tarayıcınızda açın todo.html . Sayfa tüm yapılacaklar öğelerini bir liste olarak işler ve tamamlanmış öğeleri üstü çizili olarak gösterir.

Önemli

cors Yapılandırmanızdaki ayar, yerel dosya sisteminizden açılan bu HTML dosyasının API'yi çağırmasına izin verir. Bu olmadan, tarayıcı isteği engeller.

Temizleme

İşiniz bittiğinde Docker kapsayıcısını durdurun ve kaldırın.

docker stop dab-mssql && docker rm dab-mssql

Sonraki adım