Gyors kezdés: A Data API Builder használata NoSQL-vel

Ebben a rövid útmutatóban GraphQL-végpontokat hozhat létre egy helyi Azure Cosmos DB for NoSQL emulátorhoz a Data API Builder (DAB) használatával.

Megjegyzés:

Az Azure Cosmos DB for NoSQL a Data API Builderben csak a GraphQL-végpontokat támogatja. Ehhez az adatbázistípushoz nem érhetők el REST-végpontok.

Előfeltételek

A Data API builder parancssori felületének telepítése

A Microsoft.DataApiBuilder csomagot telepítse a NuGetből, mint egy .NET-eszköz.

  1. Használja a dotnet tool install-t a Microsoft.DataApiBuilder legújabb verziójának telepítéséhez a --global argumentummal.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Megjegyzés:

    Ha a csomag már telepítve van, frissítse a csomagot a következővel dotnet tool update: .

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Ellenőrizze, hogy az eszköz telepítve van-e a dotnet tool list--global argumentum használatával.

    dotnet tool list --global
    

Az emulátor képének lekérése

Töltse le az Azure Cosmos DB for NoSQL emulator rendszerképét. Ez a letöltés eltarthat néhány percig, mert az emulátor képe nagy.

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

Az emulátor indítása

Futtassa a Cosmos DB emulátort a Dockerben. A AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE beállításra azért van szükség, hogy az emulátor a hálózati végpontok számára meghirdetje 127.0.0.1 azokat, így azok elérhetők legyenek a gazdagépről.

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

Megjegyzés:

Az emulátor 11 belső partíciót indít el, és 30-60 másodpercig is eltarthat, amíg elkészül. A https://localhost:8081/_explorer/index.html megnyitásával a böngészőben ellenőrizheti, hogy fut-e. A böngésző figyelmeztetést adhat az önaláírt tanúsítványra, de biztonságos folytatni.

Az emulátortanúsítvány telepítése

A Cosmos DB emulátor önaláírt SSL-tanúsítványt használ. Töltse le és bízzon meg a tanúsítványban, hogy a Data API Builder csatlakozni tud az emulátorhoz.

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

Az adatbázis és a kezdeti adatok létrehozása

Az emulátor beépített Adatkezelőjében adatbázist, tárolót és mintaelemeket hozhat létre. Nincs szükség további eszközökre – az Adatkezelő az emulátor részeként fut a böngészőben.

  1. Nyissa meg az Adatböngészőt a következő helyen: https://localhost:8081/_explorer/index.html.

  2. Válassza az Új adatbázis lehetőséget. Adja meg a todost adatbázis-azonosítóként, és válassza az OK gombot.

  3. Bővítse ki a todos-adatbázist, válassza a három pont (...) menüt, és válassza az Új tároló lehetőséget. Adja meg a todost tárolóazonosítóként és /id azonosítóként partíciókulcsként, majd kattintson az OK gombra.

  4. Bontsa ki a todos-tárolót , és válassza az Elemek lehetőséget. Ezután válassza az Új elem lehetőséget, cserélje le az alapértelmezett JSON-t a következő tartalomra, és válassza a Mentés lehetőséget. Ismételje meg az egyes elemeket.

    1. elem:

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

    2. elem:

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

    3. elem:

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

GraphQL-sémafájl létrehozása

Az Azure Cosmos DB for NoSQL-hez GraphQL-sémafájl szükséges. Hozzon létre egy fájlt schema.gql az alábbi tartalommal.

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

A Data API Builder konfigurálása

  1. Inicializálja a konfigurációt az emulátor alapértelmezett kapcsolati sztringjével.

    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. Adja hozzá a Todo entitást .

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

A dab-config.json fájlnak most az alábbi példához hasonlóan kell kinéznie:

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

Jótanács

Kihagyhatja a dab init és dab add parancsokat, és közvetlenül az itt látható tartalommal hozhatja létre a dab-config.json és schema.gql fájlokat.

Az API indítása

Az eszköz futtatására és API-végpontok létrehozására használható dab start az entitás számára.

dab start

A kimenetnek tartalmaznia kell a futó API címét.

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

Jótanács

Ebben a példában az alkalmazás az localhost porton fut. Előfordulhat, hogy a futó alkalmazás címe és portja eltérő.

Az API tesztelése

  1. Nyissa meg a böngészőt, és keresse meg a GraphQL-végpontot.

    http://localhost:5000/graphql
    

    Fejlesztési módban ez az URL megnyitja a Nitro GraphQL IDE-t.

  2. Hozzon létre egy új dokumentumot, és futtassa a következő lekérdezést az összes teendőelem lekéréséhez.

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. A válasznak tartalmaznia kell mind a három teendőelemet.

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

Takarítás

Ha elkészült, állítsa le és távolítsa el a Docker-tárolót.

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

Következő lépés