Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym szybkim starcie utworzysz endpointy GraphQL dla lokalnego emulatora usługi Azure Cosmos DB dla NoSQL przy użyciu konstruktora API danych (DAB).
Uwaga / Notatka
Usługa Azure Cosmos DB for NoSQL w narzędziu Data API builder obsługuje tylko punkty końcowe GraphQL. Punkty końcowe REST nie są dostępne dla tego typu bazy danych.
Wymagania wstępne
Zainstaluj narzędzie linii poleceń do budowy API danych
Zainstaluj pakiet Microsoft.DataApiBuilder z narzędzia NuGet jako narzędzie .NET.
Użyj
dotnet tool install, aby zainstalować najnowszą wersjęMicrosoft.DataApiBuilderza pomocą argumentu--global.dotnet tool install --global Microsoft.DataApiBuilderUwaga / Notatka
Jeśli pakiet jest już zainstalowany, zaktualizuj pakiet przy użyciu polecenia
dotnet tool update.dotnet tool update --global Microsoft.DataApiBuilderSprawdź, czy narzędzie jest zainstalowane za pomocą
dotnet tool listz użyciem argumentu--global.dotnet tool list --global
Ściąganie obrazu emulatora
Pobierz obraz emulatora usługi Azure Cosmos DB for NoSQL. Pobieranie może potrwać kilka minut, ponieważ obraz emulatora jest duży.
docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
Uruchamianie emulatora
Uruchom emulator usługi Cosmos DB na platformie Docker. To ustawienie AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE jest wymagane, aby emulator ogłaszał swoje punkty końcowe sieci 127.0.0.1, co pozwala na dołączenie z maszyny hosta.
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
Uwaga / Notatka
Emulator uruchamia 11 partycji wewnętrznych i może potrzebować od 30 do 60 sekund, aby się przygotować. Możesz sprawdzić, czy działa, otwierając https://localhost:8081/_explorer/index.html w przeglądarce. Przeglądarka może ostrzegać o certyfikacie z podpisem własnym — możesz kontynuować.
Instalowanie certyfikatu emulatora
Emulator usługi Cosmos DB używa certyfikatu SSL z podpisem własnym. Pobierz i ufaj temu certyfikatowi, aby konstruktor interfejsu API danych mógł nawiązać połączenie z emulatorem.
curl -k https://localhost:8081/_explorer/emulator.pem > ~/emulatorcert.crt
sudo cp ~/emulatorcert.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
Tworzenie bazy danych i danych początkowych
Użyj wbudowanego Eksploratora danych emulatora, aby utworzyć bazę danych, kontener i przykładowe elementy. Nie są potrzebne żadne dodatkowe narzędzia — Eksplorator danych działa w przeglądarce w ramach emulatora.
Otwórz Eksploratora danych pod adresem
https://localhost:8081/_explorer/index.html.Wybierz pozycję Nowa baza danych. Wprowadź todos jako identyfikator bazy danych i wybierz OK.
Rozwiń bazę danych todos , wybierz menu wielokropka (...), a następnie wybierz pozycję Nowy kontener. Wprowadź todos jako identyfikator kontenera i /id jako klucz partycji, a następnie wybierz OK.
Rozwiń kontener todos i wybierz pozycję Elementy. Następnie wybierz pozycję Nowy element, zastąp domyślny kod JSON następującą zawartością, a następnie wybierz pozycję Zapisz. Powtórz dla każdego elementu.
Element 1:
{ "id": "1", "title": "Walk the dog", "completed": false }Element 2:
{ "id": "2", "title": "Feed the fish", "completed": false }Element 3:
{ "id": "3", "title": "Comb the cat", "completed": true }
Tworzenie pliku schematu GraphQL
Usługa Azure Cosmos DB for NoSQL wymaga pliku schematu GraphQL. Utwórz plik o nazwie schema.gql z następującą zawartością.
type Todo @model {
id: ID!
title: String!
completed: Boolean!
}
Konfigurowanie konstruktora interfejsu API danych
Zainicjuj konfigurację przy użyciu domyślnych parametrów połączenia emulatora.
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=="Dodaj jednostkę Todo .
dab add Todo --source "todos" --permissions "anonymous:*"
Plik dab-config.json powinien teraz wyglądać podobnie do poniższego przykładu:
{
"$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": [
"*"
]
}
]
}
}
}
Wskazówka
Możesz pominąć polecenia dab init i dab add i utworzyć pliki dab-config.json i schema.gql bezpośrednio z zawartością przedstawioną tutaj.
Uruchamianie interfejsu API
Użyj dab start, aby uruchomić narzędzie i utworzyć punkty końcowe interfejsu API dla jednostki.
dab start
Dane wyjściowe powinny zawierać adres uruchomionego interfejsu API.
Successfully completed runtime initialization.
info: Microsoft.Hosting.Lifetime[14]
Now listening on: <http://localhost:5000>
Wskazówka
W tym przykładzie aplikacja działa na localhost porcie 5000. Uruchomiona aplikacja może mieć inny adres i port.
Testowanie interfejsu API
Otwórz przeglądarkę i przejdź do punktu końcowego GraphQL.
http://localhost:5000/graphqlW trybie programowania ten adres URL otwiera środowisko IDE Nitro GraphQL.
Utwórz nowy dokument i uruchom następujące zapytanie, aby pobrać wszystkie elementy zadań do wykonania.
query { todos { items { id title completed } } }Odpowiedź powinna zawierać wszystkie trzy zadania do wykonania.
{ "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 } ] } } }
Czyszczenie
Zatrzymaj i usuń kontener Docker po zakończeniu.
docker stop dab-cosmos && docker rm dab-cosmos
Następne kroki
punkty końcowe GraphQL