Share via


Usare ambienti di file di configurazione con Generatore API dati

Questa guida illustra i passaggi per definire come destinazione un ambiente di sviluppo usando un file di configurazione. I file di configurazione dei risultati finali devono essere sufficientemente flessibili da poter aggiungere una configurazione del database di produzione in futuro con modifiche minime.

Prerequisiti

Create tabella e dati SQL

Create una tabella con dati fittizi da usare in questo scenario di esempio.

  1. Connettersi al server SQL e al database usando il client o lo strumento preferito. Gli esempi includono, ma non sono limitati a: SQL Server Management Studio, Azure Data Studio e l'estensione SQL Server per Visual Studio Code.

  2. Create una tabella denominata Books con id le colonne e 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. Inserire quattro righe di libri di esempio nella Books tabella.

    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. Testare i dati con una query semplice SELECT * .

    SELECT * FROM dbo.Books
    

Create file di configurazione di base

Create un file di configurazione di base usando l'interfaccia della riga di comando di DAB.

  1. Create un file di configurazione tipico usando dab init.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. Aggiungere un'entità Book usando dab add.

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. Osservare il file di configurazione dab-config.json corrente. Il file deve includere un'implementazione di base dell'API con una singola entità, un endpoint API REST e un endpoint 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 file delle variabili di ambiente

Aggiungere ora un file di ambiente per archiviare le variabili di ambiente per DAB.

  1. Create un file con estensione env nella stessa directory dei file di configurazione dell'interfaccia della riga di comando di DAB.

  2. Aggiungere una DAB_ENVIRONMENT variabile di Developmentambiente con il valore . Aggiungere inoltre una SQL_DOCKER_CONNECTION_STRING variabile di ambiente con il database stringa di connessione.

    SQL_DOCKER_CONNECTION_STRING=<connection-string>
    DAB_ENVIRONMENT=Development
    

Create file di configurazione dell'ambiente

Aggiungere infine un file di configurazione di sviluppo con il delta tra la configurazione corrente e la configurazione dell'ambiente desiderata.

  1. Creare un file dab-config.Development.json . Aggiungere il contenuto seguente per usare la @env() funzione per impostare il connection-string valore nell'ambiente di sviluppo.

    {
      "$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. Salvare le modifiche apportate a .env, dab-config.json e dab-config. Development.json file.

Impostazione del test

  1. Usare dab start per convalidare l'avvio dello strumento come previsto.

    dab start
    
  2. L'output dello strumento deve includere l'indirizzo da usare per passare all'API in esecuzione.

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

    Suggerimento

    In questo esempio l'applicazione viene eseguita sulla localhost porta 5000. L'applicazione in esecuzione può avere un indirizzo e una porta diversi.

  3. Provare prima di tutto l'API manualmente inviando una richiesta GET a /api/Book.

    Suggerimento

    In questo esempio l'URL sarà https://localhost:5000/api/Book. È possibile passare a questo URL usando il Web browser.

  4. Passare quindi alla pagina della documentazione di Swagger all'indirizzo /swagger.

    Suggerimento

    In questo esempio l'URL sarà <https://localhost:5000/swagger. Anche in questo caso, è possibile passare a questo URL usando il Web browser.

  5. Infine, provare l'endpoint GraphQL passando a /graphql ed eseguendo questa operazione.

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

    Suggerimento

    In questo esempio l'URL sarà https://localhost:5000/graphql. Anche in questo caso, è possibile passare a questo URL usando il Web browser.