Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Verwenden Sie
dotnet tool install, um die neueste Version vonMicrosoft.DataApiBuildermit dem Argument--globalzu installieren.dotnet tool install --global Microsoft.DataApiBuilderHinweis
Wenn das Paket bereits installiert ist, aktualisieren Sie das Paket stattdessen mithilfe von
dotnet tool update.dotnet tool update --global Microsoft.DataApiBuilderStellen Sie sicher, dass das Tool mit dem Argument
dotnet tool listinstalliert ist, indem Sie--globalverwenden.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.
Öffnen Sie den Daten-Explorer unter
https://localhost:8081/_explorer/index.html.Wählen Sie "Neue Datenbank" aus. Geben Sie "todos" als Datenbank-ID ein, und wählen Sie "OK" aus.
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.
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
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=="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
Öffnen Sie Ihren Browser, und navigieren Sie zum GraphQL-Endpunkt.
http://localhost:5000/graphqlIm Entwicklungsmodus öffnet diese URL die Nitro GraphQL-IDE.
Erstellen Sie ein neues Dokument, und führen Sie die folgende Abfrage aus, um alle Todoelemente abzurufen.
query { todos { items { id title completed } } }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