Rychlý start: Použití tvůrce rozhraní Data API s NoSQL

V tomto rychlém startu vytvoříte koncové body GraphQL pro místní emulátor Azure Cosmos DB for NoSQL pomocí Tvůrce rozhraní Data API (DAB).

Poznámka:

Azure Cosmos DB for NoSQL v Tvůrci rozhraní Data API podporuje pouze koncové body GraphQL. Koncové body REST nejsou pro tento typ databáze dostupné.

Předpoklady

Instalovat Data API builder CLI

Nainstalujte balíček Microsoft.DataApiBuilder z NuGetu jako nástroj .NET.

  1. Použijte dotnet tool install k instalaci nejnovější verze Microsoft.DataApiBuilder s argumentem --global.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Poznámka:

    Pokud je balíček již nainstalován, aktualizujte balíček místo toho pomocí dotnet tool update.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Pomocí argumentu dotnet tool list ověřte, že je nástroj nainstalovaný--global.

    dotnet tool list --global
    

Stáhnout image emulátoru

Stáhněte si image emulátoru Azure Cosmos DB for NoSQL. Stažení může trvat několik minut, protože image emulátoru je velká.

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

Spusťte emulátor.

Spusťte emulátor cosmos DB v Dockeru. Nastavení AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE je vyžadováno, aby emulátor ohlašoval 127.0.0.1 své koncové body sítě a zviditelňuje je pro hostitelský počítač.

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

Poznámka:

Emulátor spustí 11 interních oddílů a může být připraven během 30 až 60 sekund. Můžete ověřit, že je spuštěný, tím, že otevřete https://localhost:8081/_explorer/index.html ve svém prohlížeči. Váš prohlížeč může upozornit na certifikát podepsaný svým držitelem – je bezpečné pokračovat.

Instalace certifikátu emulátoru

Emulátor služby Cosmos DB používá certifikát SSL podepsaný svým držitelem. Stáhněte a důvěřujte tomuto certifikátu, aby se nástroj Data API mohl připojit k emulátoru.

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

Vytvoření databáze a počátečních dat

Pomocí integrovaného Průzkumníka dat emulátoru můžete vytvořit databázi, kontejner a ukázkové položky. Nejsou potřeba žádné další nástroje – Průzkumník dat běží v prohlížeči jako součást emulátoru.

  1. Otevřete Průzkumníka dat na adrese https://localhost:8081/_explorer/index.html.

  2. Vyberte Novou databázi. Jako ID databáze zadejte todos a vyberte OK.

  3. Rozbalte databázi todos , vyberte nabídku se třemi tečkou (...) a zvolte Nový kontejner. Zadejte todos jako ID kontejneru a /id jako klíč oddílu a pak vyberte OK.

  4. Rozbalte kontejner todos a vyberte Položky. Pak vyberte Nová položka, nahraďte výchozí JSON následujícím obsahem a vyberte Uložit. Opakujte pro každou položku.

    Položka 1:

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

    Položka 2:

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

    Položka 3:

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

Vytvoření souboru schématu GraphQL

Azure Cosmos DB for NoSQL vyžaduje soubor schématu GraphQL. Vytvořte soubor s názvem schema.gql s následujícím obsahem.

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

Konfigurace tvůrce rozhraní Data API

  1. Inicializuje konfiguraci pomocí výchozího připojovacího řetězce emulátoru.

    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. Přidejte entitu Todo .

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

Soubor dab-config.json by teď měl vypadat podobně jako v následujícím příkladu:

{
  "$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": [
            "*"
          ]
        }
      ]
    }
  }
}

Návod

Můžete přeskočit příkazy dab init a dab add a vytvořit dab-config.json a schema.gql soubory přímo s obsahem zde zobrazeným.

Spuštění rozhraní API

Slouží dab start ke spuštění nástroje a vytvoření koncových bodů rozhraní API pro vaši entitu.

dab start

Výstup by měl obsahovat adresu spuštěného rozhraní API.

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

Návod

V tomto příkladu aplikace běží na localhost portu 5000. Spuštěná aplikace může mít jinou adresu a port.

Testování rozhraní API

  1. Otevřete prohlížeč a přejděte do koncového bodu GraphQL.

    http://localhost:5000/graphql
    

    V režimu vývoje tato adresa URL otevře rozhraní IDE Nitro GraphQL.

  2. Vytvořte nový dokument a spuštěním následujícího dotazu načtěte všechny položky úkolů.

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. Odpověď by měla obsahovat všechny tři položky úkolů.

    {
      "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 }
          ]
        }
      }
    }
    

Vyčištění

Až budete hotovi, zastavte a odeberte kontejner Dockeru.

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

Další krok