Condividi tramite


Usare ambienti di file di configurazione con Generatore API dati

Questa guida illustra i passaggi per indirizzare un ambiente di sviluppo usando un file di configurazione. I file di configurazione dei risultati finali devono essere sufficientemente flessibili che una configurazione del database di produzione può essere aggiunta 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 e name colonne.

    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 del libro 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 SELECT * semplice query.

    SELECT * FROM dbo.Books
    

Create file di configurazione di base

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

  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 corrente dab-config.json . Il file deve includere un'implementazione di base dell'API con una singola entità, un endpoint DELL'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": "*"
                }
              ]
            }
          ]
        }
      }
    }
    

file di variabili di ambiente Create

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

  1. Create un file denominato .env nella stessa directory dei file di configurazione dell'interfaccia della riga di comando daB.

Nota

Il .env nome del file, ad esempio .gitignore e .editorconfig i file non hanno alcun nome file, solo un'estensione di file. Il nome è senza distinzione tra maiuscole e minuscole, ma la convenzione è minuscola.

  1. Aggiungere una DAB_ENVIRONMENT variabile di ambiente con un valore di Development. Aggiungere anche 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 funzione per impostare il @env()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 è in esecuzione localhost sulla porta 5000. L'applicazione in esecuzione potrebbe avere un indirizzo e una porta diversi.

  3. Provare prima di tutto l'API eseguendo manualmente 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 in /swagger.

    Suggerimento

    In questo esempio l'URL sarà <https://localhost:5000/swagger. Di nuovo, è 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. Di nuovo, è possibile passare a questo URL usando il Web browser.