Freigeben über


Schnellstart: Verwenden des Daten-API-Generators mit NoSQL

In dieser Schnellstartanleitung erstellen Sie GraphQL-Endpunkte für einen lokalen Azure Cosmos DB für NoSQL-Emulator mithilfe des Daten-API-Generators (DAB).

Hinweis

Azure Cosmos DB für NoSQL im Daten-API-Generator unterstützt nur GraphQL-Endpunkte. REST-Endpunkte sind für diesen Datenbanktyp nicht verfügbar.

Voraussetzungen

Installieren des Daten-API-Generators CLI

Installieren Sie das Microsoft.DataApiBuilder Paket von NuGet als .NET-Tool.

  1. Verwenden Sie dotnet tool install, um die neueste Version von Microsoft.DataApiBuilder mit dem Argument --global zu installieren.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Hinweis

    Wenn das Paket bereits installiert ist, aktualisieren Sie das Paket stattdessen mithilfe von dotnet tool update.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Stellen Sie sicher, dass das Tool mit dem Argument dotnet tool list installiert ist, indem Sie --global verwenden.

    dotnet tool list --global
    

Das Emulator-Image abrufen

Laden Sie das Azure Cosmos DB-Emulatorimage für NoSQL herunter. Dieser Download kann einige Minuten dauern, da das Emulatorimage groß ist.

docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

Starten des Emulators

Führen Sie den Cosmos DB-Emulator in Docker aus. Die AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE Einstellung ist erforderlich, damit der Emulator seine Netzwerkendpunkte 127.0.0.1 bekannt gibt und sie von Ihrem Hostcomputer aus erreichbar sind.

docker run --name dab-cosmos --publish 8081:8081 --publish 10250-10255:10250-10255 --env AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=127.0.0.1 --detach mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest

Hinweis

Der Emulator startet 11 interne Partitionen und kann 30 bis 60 Sekunden dauern, bis er einsatzbereit ist. Sie können überprüfen, ob es läuft, indem Sie es in Ihrem Browser öffnen https://localhost:8081/_explorer/index.html. Ihr Browser warnt möglicherweise über das selbstsignierte Zertifikat – es ist sicher, den Vorgang fortzusetzen.

Installieren des Emulatorzertifikats

Der Cosmos DB-Emulator verwendet ein selbstsigniertes SSL-Zertifikat. Laden Sie dieses Zertifikat herunter, und vertrauen Sie diesem Zertifikat, damit der Daten-API-Generator eine Verbindung mit dem Emulator herstellen kann.

curl -k https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
sudo cp ~/emulatorcert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Erstellen Sie die Datenbank und die Anfangsdaten.

Verwenden Sie den integrierten Daten-Explorer des Emulators, um eine Datenbank, einen Container und Beispielelemente zu erstellen. Es sind keine zusätzlichen Tools erforderlich – der Daten-Explorer wird im Browser als Teil des Emulators ausgeführt.

  1. Öffnen Sie den Daten-Explorer unter https://localhost:8081/_explorer/index.html.

  2. Wählen Sie "Neue Datenbank" aus. Geben Sie "todos" als Datenbank-ID ein, und wählen Sie "OK" aus.

  3. Erweitern Sie die Todos-Datenbank, wählen Sie das Menü mit den Auslassungspunkten (...) und dann Neuer Container aus. Geben Sie "todos" als Container-ID und "/id " als Partitionsschlüssel ein, und wählen Sie dann "OK" aus.

  4. Erweitern Sie den Todos-Container , und wählen Sie "Elemente" aus. Wählen Sie dann "Neues Element" aus, ersetzen Sie den standardmäßigen JSON-Code durch den folgenden Inhalt, und wählen Sie " Speichern" aus. Wiederholen Sie diesen Vorgang für jedes Element.

    Artikel 1:

    {
      "id": "1",
      "title": "Walk the dog",
      "completed": false
    }
    

    Artikel 2:

    {
      "id": "2",
      "title": "Feed the fish",
      "completed": false
    }
    

    Artikel 3:

    {
      "id": "3",
      "title": "Comb the cat",
      "completed": true
    }
    

Erstellen einer GraphQL-Schemadatei

Azure Cosmos DB für NoSQL erfordert eine GraphQL-Schemadatei. Erstellen Sie eine Datei namens schema.gql mit folgendem Inhalt.

type Todo @model {
  id: ID!
  title: String!
  completed: Boolean!
}

Konfigurieren des Daten-API-Generators

  1. Initialisieren Sie die Konfiguration mit der Standardverbindungszeichenfolge des Emulators.

    dab init --database-type "cosmosdb_nosql" --host-mode "Development" --cosmosdb_nosql-database todos --graphql-schema schema.gql --connection-string "AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
    
  2. Fügen Sie die Todo-Entität hinzu.

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

Ihre dab-config.json Datei sollte nun ähnlich wie im folgenden Beispiel aussehen:

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
  "data-source": {
    "database-type": "cosmosdb_nosql",
    "connection-string": "AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw==",
    "options": {
      "database": "todos",
      "schema": "schema.gql"
    }
  },
  "runtime": {
    "graphql": {
      "enabled": true
    },
    "host": {
      "mode": "development"
    }
  },
  "entities": {
    "Todo": {
      "source": {
        "object": "todos",
        "type": "table"
      },
      "permissions": [
        {
          "role": "anonymous",
          "actions": [
            "*"
          ]
        }
      ]
    }
  }
}

Tipp

Sie können die dab init- und dab add-Befehle überspringen und die dab-config.json- und schema.gql-Dateien direkt mit den hier angezeigten Inhalten erstellen.

Starten der API

Verwenden Sie dab start, um das Tool auszuführen und API-Endpunkte für Ihre Entität zu erstellen.

dab start

Die Ausgabe sollte die Adresse der ausgeführten API enthalten.

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

Tipp

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

Testen der API

  1. Öffnen Sie Ihren Browser, und navigieren Sie zum GraphQL-Endpunkt.

    http://localhost:5000/graphql
    

    Im Entwicklungsmodus öffnet diese URL die Nitro GraphQL-IDE.

  2. Erstellen Sie ein neues Dokument, und führen Sie die folgende Abfrage aus, um alle Todoelemente abzurufen.

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. Die Antwort sollte alle drei To-Do-Elemente enthalten.

    {
      "data": {
        "todos": {
          "items": [
            { "id": "1", "title": "Walk the dog", "completed": false },
            { "id": "2", "title": "Feed the fish", "completed": false },
            { "id": "3", "title": "Comb the cat", "completed": true }
          ]
        }
      }
    }
    

Aufräumen

Beenden Und entfernen Sie den Docker-Container, wenn Sie fertig sind.

docker stop dab-cosmos && docker rm dab-cosmos

Nächster Schritt