Freigeben über


Verwenden von Konfigurationsdateiumgebungen mit dem Daten-API-Generator

In diesem Leitfaden werden die Schritte für eine Entwicklungsumgebung mithilfe einer Konfigurationsdatei beschrieben. Die Endergebniskonfigurationsdateien sollten so flexibel sein, dass eine Produktionsdatenbankkonfiguration in Zukunft mit minimalen Änderungen hinzugefügt werden kann.

Voraussetzungen

Create SQL-Tabelle und -Daten

Create eine Tabelle mit fiktiven Daten, die in diesem Beispielszenario verwendet werden sollen.

  1. Stellen Sie mithilfe Ihres bevorzugten Clients oder Tools eine Verbindung mit dem SQL Server und der Datenbank her. Beispiele hierfür sind unter anderem: SQL Server Management Studio, Azure Data Studio und die SQL Server-Erweiterung für Visual Studio Code.

  2. Create eine Tabelle mit id dem Namen Books und name spalten.

    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. Fügen Sie vier Beispielbuchzeilen in die Books Tabelle ein.

    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. Testen Sie Ihre Daten mit einer einfachen SELECT * Abfrage.

    SELECT * FROM dbo.Books
    

Create Basiskonfigurationsdatei

Create eine Baselinekonfigurationsdatei mithilfe der DAB CLI.

  1. Create eine typische Konfigurationsdatei mit dab init.

    dab init --database-type "mssql" --host-mode "Development"
    
  2. Fügen Sie mithilfe von eine Book-Entitätdab addhinzu.

    dab add Book --source "dbo.Books" --permissions "anonymous:*"
    
  3. Beobachten Sie ihre aktuelle dab-config.json-Konfigurationsdatei. Die Datei sollte eine Basisimplementierung Ihrer API mit einer einzelnen Entität, einem REST-API-Endpunkt und einem GraphQL Endpunkt enthalten.

    {
      "$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 Umgebungsvariablendatei

Fügen Sie nun eine Umgebungsdatei hinzu, um Umgebungsvariablen für DAB zu speichern.

  1. Create eine Datei namens .env im selben Verzeichnis wie Ihre DAB CLI-Konfigurationsdateien.

Hinweis

Der .env Dateiname, z. B .gitignore . und .editorconfig Dateien, hat keinen Dateinamen, nur eine Dateierweiterung. Beim Namen wird die Groß-/Kleinschreibung nicht beachtet, aber die Konvention ist Kleinbuchstaben.

  1. Fügen Sie eine Umgebungsvariable DAB_ENVIRONMENT mit dem Wert hinzu Development. Fügen Sie außerdem eine Umgebungsvariable SQL_DOCKER_CONNECTION_STRING mit Ihrer Datenbank Verbindungszeichenfolge hinzu.

    SQL_DOCKER_CONNECTION_STRING=<connection-string>
    DAB_ENVIRONMENT=Development
    

Create Umgebungskonfigurationsdatei

Fügen Sie abschließend eine Entwicklungskonfigurationsdatei mit dem Delta zwischen Ihrer aktuellen Konfiguration und der gewünschten Umgebungskonfiguration hinzu.

  1. Erstellen Sie die Datei dab-config.Development.json. Fügen Sie den folgenden Inhalt hinzu, um die @env() -Funktion zum Festlegen Ihres connection-string Werts in der Entwicklungsumgebung zu verwenden.

    {
      "$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. Speichern Sie Ihre Änderungen an ENV, dab-config.json und dab-config. Development.json Dateien.

Testeinrichtung

  1. Verwenden Sie dab start , um zu überprüfen, ob das Tool wie erwartet gestartet wird.

    dab start
    
  2. Die Ausgabe des Tools sollte die Adresse enthalten, die zum Navigieren zur ausgeführten API verwendet werden soll.

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

    Tipp

    In diesem Beispiel wird die Anwendung an localhost Port 5000 ausgeführt. Ihre ausgeführte Anwendung verfügt möglicherweise über eine andere Adresse und einen anderen Port.

  3. Probieren Sie zunächst die API manuell aus, indem Sie eine GET-Anforderung an ausstellen /api/Book.

    Tipp

    In diesem Beispiel lautet https://localhost:5000/api/Bookdie URL . Sie können mit Ihrem Webbrowser zu dieser URL navigieren.

  4. Navigieren Sie als Nächstes unter zur Swagger-Dokumentationsseite /swagger.

    Tipp

    In diesem Beispiel lautet <https://localhost:5000/swaggerdie URL . Auch hier können Sie mit Ihrem Webbrowser zu dieser URL navigieren.

  5. Probieren Sie schließlich den GraphQL Endpunkt aus, indem Sie zu /graphql navigieren und diesen Vorgang ausführen.

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

    Tipp

    In diesem Beispiel lautet https://localhost:5000/graphqldie URL . Auch hier können Sie mit Ihrem Webbrowser zu dieser URL navigieren.