Compartir a través de


Uso de entornos de archivos de configuración con Data API Builder

En esta guía se describen los pasos para tener como destino un entorno de desarrollo mediante un archivo de configuración. Los archivos de configuración del resultado final deben ser lo suficientemente flexibles como para que se pueda agregar una configuración de base de datos de producción en el futuro con cambios mínimos.

Requisitos previos

Create tabla y datos de SQL

Create una tabla con datos ficticios que se usarán en este escenario de ejemplo.

  1. Conéctese a SQL Server y a la base de datos mediante su cliente o herramienta preferidos. Entre los ejemplos se incluyen, entre otros: SQL Server Management Studio, Azure Data Studio y la extensión SQL Server para Visual Studio Code.

  2. Create una tabla denominada Books con id las columnas y name .

    DROP TABLE IF EXISTS dbo.Books;
    
    CREATE TABLE dbo.Books
    (
        id int NOT NULL PRIMARY KEY,
        title nvarchar(1000) NOT NULL,
        [year] int null,
        [pages] int null
    );
    GO
    
  3. Inserte cuatro filas de libro de ejemplo en la Books tabla.

    INSERT INTO dbo.Books VALUES
        (1000, 'Practical Azure SQL Database for Modern Developers', 2020, 326),
        (1001, 'SQL Server 2019 Revealed: Including Big Data Clusters and Machine Learning', 2019, 444),
        (1002, 'Azure SQL Revealed: A Guide to the Cloud for SQL Server Professionals', 2020, 528),
        (1003, 'SQL Server 2022 Revealed: A Hybrid Data Platform Powered by Security, Performance, and Availability', 2022, 506)
    GO
    
  4. Pruebe los datos con una consulta simple SELECT * .

    SELECT * FROM dbo.Books
    

Create archivo de configuración base

Create un archivo de configuración de línea base mediante la CLI de DAB.

  1. Create un archivo de configuración típico mediante dab init.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. Agregue una entidad Book mediante dab add.

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. Observe el archivo de configuración de dab-config.json actual. El archivo debe incluir una implementación de línea base de la API con una sola entidad, un punto de conexión de la API REST y un punto de conexión de GraphQL.

    {
      "$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "",
        "options": {
          "set-session-context": false
        }
      },
      "runtime": {
        "rest": {
          "enabled": true,
          "path": "/api",
          "request-body-strict": true
        },
        "graphql": {
          "enabled": true,
          "path": "/graphql",
          "allow-introspection": true
        },
        "host": {
          "cors": {
            "origins": [],
            "allow-credentials": false
          },
          "authentication": {
            "provider": "StaticWebApps"
          },
          "mode": "development"
        }
      },
      "entities": {
        "Book": {
          "source": {
            "object": "dbo.Books",
            "type": "table"
          },
          "graphql": {
            "enabled": true,
            "type": {
              "singular": "Book",
              "plural": "Books"
            }
          },
          "rest": {
            "enabled": true
          },
          "permissions": [
            {
              "role": "anonymous",
              "actions": [
                {
                  "action": "*"
                }
              ]
            }
          ]
        }
      }
    }
    

Create archivo de variables de entorno

Ahora, agregue un archivo de entorno para almacenar variables de entorno para DAB.

  1. Create un archivo denominado .env en el mismo directorio que los archivos de configuración de la CLI de DAB.

Nota

El .env nombre de archivo, como .gitignore y .editorconfig los archivos, no tiene nombre de archivo, solo una extensión de archivo. El nombre no distingue mayúsculas de minúsculas, pero la convención es minúscula.

  1. Agregue una DAB_ENVIRONMENT variable de entorno con un valor de Development. Además, agregue una SQL_DOCKER_CONNECTION_STRING variable de entorno con la base de datos cadena de conexión.

    SQL_DOCKER_CONNECTION_STRING=<connection-string>
    DAB_ENVIRONMENT=Development
    

archivo de configuración del entorno de Create

Por último, agregue un archivo de configuración de desarrollo con la diferencia entre la configuración actual y la configuración de entorno deseada.

  1. Cree un archivo dab-config.Development.json . Agregue el siguiente contenido para usar la @env() función para establecer el connection-string valor en el entorno de desarrollo.

    {
      "$schema": "<https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json>",
      "data-source": {
        "database-type": "mssql",
        "connection-string": "@env('SQL_DOCKER_CONNECTION_STRING')"
      }
    }
    
  2. Guarde los cambios en .env, dab-config.json y dab-config. Development.json archivos.

Prueba de configuración

  1. Use dab start para validar que la herramienta se inicia según lo previsto.

    dab start
    
  2. La salida de la herramienta debe incluir la dirección que se va a usar para ir a la API en ejecución.

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

    Sugerencia

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

  3. En primer lugar, pruebe la API manualmente mediante la emisión de una solicitud GET a /api/Book.

    Sugerencia

    En este ejemplo, la dirección URL sería https://localhost:5000/api/Book. Puede navegar a esta dirección URL mediante el explorador web.

  4. A continuación, vaya a la página de documentación de Swagger en /swagger.

    Sugerencia

    En este ejemplo, la dirección URL sería <https://localhost:5000/swagger. De nuevo, puede navegar a esta dirección URL mediante el explorador web.

  5. Por último, pruebe el punto de conexión de GraphQL; para ello, vaya a /graphql y ejecute esta operación.

    query {
      books(filter: {
        pages: {
          lt: 500
        }
      }) {
        items {
          id
          title
          year
          pages
        }
      }
    }
    

    Sugerencia

    En este ejemplo, la dirección URL sería https://localhost:5000/graphql. De nuevo, puede navegar a esta dirección URL mediante el explorador web.