Compartir a través de


Inicio rápido: Uso del generador de API de datos con SQL

En este inicio rápido, creará puntos de conexión REST y GraphQL para una base de datos SQL local mediante data API Builder (DAB). Elija el motor de base de datos para empezar.

Prerrequisitos

Instalación de la CLI de Data API Builder

Instale el paquete Microsoft.DataApiBuilder desde NuGet como herramienta de .NET.

  1. Utiliza dotnet tool install para instalar la versión más reciente de Microsoft.DataApiBuilder con el argumento --global.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Nota:

    Si el paquete ya está instalado, actualice el paquete en su lugar mediante dotnet tool update.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Compruebe que la herramienta está instalada con el parámetro dotnet tool list usando --global.

    dotnet tool list --global
    

Saca la imagen de base de datos

Sugerencia

¿Ya tiene una base de datos? Vaya a Crear y inicializar la base de datos, ejecute el script SQL para el motor y, a continuación, vaya a Configuración del generador de Data API con su propia cadena de conexión.

Descargue la imagen de Docker para el motor de base de datos. Este paso puede tardar unos minutos en función de la velocidad de conexión.

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

Iniciar la base de datos

Ejecute una instancia de base de datos local en 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

Sugerencia

Si el puerto 1433 ya está en uso (por ejemplo, mediante una instalación local de SQL Server), cambie --publish a otro puerto de host como 1434:1433 y actualice Server=localhost,1433 a Server=localhost,1434 en pasos posteriores.

Compruebe que el motor de base de datos está listo antes de ejecutar el comando siguiente.

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

Si devuelve un error, espere unos segundos e inténtelo de nuevo.

Creación y propagación de la base de datos

Cree una base de datos y una todos tabla y agregue datos de ejemplo. Si usa Docker, no se necesita ningún cliente SQL:docker exec ejecuta los comandos directamente dentro del contenedor. Si usa su propia base de datos, ejecute el script SQL en su herramienta preferida.

  1. Cree la base de datos.

    docker exec dab-mssql /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P "P@ssw0rd1" -C -Q "CREATE DATABASE todos;"
    
  2. Cree la tabla y agregue datos de ejemplo.

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

Sugerencia

¿Usa su propio servidor SQL Server? Ejecute este script directamente:

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

Configuración del generador de API de datos

Cree un archivo de configuración DAB y agregue una entidad Todo .

Sugerencia

¿Usa su propia base de datos? Reemplace la cadena de conexión de dab init por la suya propia:

  • 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. Inicialice la configuració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. Agregue la entidad Todo .

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

El dab-config.json archivo debería tener ahora un aspecto similar al del ejemplo siguiente:

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

Sugerencia

Puede omitir los dab init comandos y dab add y crear el dab-config.json archivo directamente con el contenido que se muestra aquí.

Inicio de la API

Use dab start para ejecutar la herramienta y crear puntos de conexión de API para la entidad.

dab start

La salida debe incluir la dirección de la API en ejecución.

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

Sugerencia

En este ejemplo, la aplicación se ejecuta en localhost el puerto 5000. La aplicación en ejecución puede tener una dirección y un puerto diferentes.

Prueba de la API

  1. Abra su navegador y vaya al punto de conexión REST de la entidad Todo.

    http://localhost:5000/api/Todo
    
  2. La respuesta JSON debe incluir las tres tareas pendientes.

    {
      "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. Vaya a la página de documentación de Swagger en /swagger.

    http://localhost:5000/swagger
    

Compilación de una aplicación web

Muestra tus tareas pendientes en un navegador mediante un archivo HTML simple. Cree un archivo denominado todo.html mediante el punto de conexión 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>

Abra todo.html en el explorador. La página captura todos los elementos de tareas pendientes y los representa como una lista, con los elementos completados que se muestran en tachado.

Importante

La cors configuración de la configuración permite que este archivo HTML , abierto desde el sistema de archivos local, llame a la API. Sin él, el explorador bloquea la solicitud.

Limpieza

Detenga y quite el contenedor de Docker cuando haya terminado.

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

Paso siguiente