Aracılığıyla paylaş


Hızlı Başlangıç: Veri API oluşturucusunu NoSQL ile kullanma

Bu hızlı başlangıçta, Data API builder (DAB) kullanarak NoSQL için yerel Azure Cosmos DB öykünücüsü için GraphQL uç noktaları oluşturacaksınız.

Uyarı

Veri API oluşturucusunda NoSQL için Azure Cosmos DB yalnızca GraphQL uç noktalarını destekler. REST uç noktaları bu veritabanı türü için kullanılamaz.

Önkoşullar

Veri API'sini oluşturucu CLI'yi yükleme

NuGet'ten Microsoft.DataApiBuilder paketini .NET aracı olarak yükleyin.

  1. En son sürümünü dotnet tool install bağımsız değişkeniyle yüklemek için Microsoft.DataApiBuilder öğesini --global kullanın.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Uyarı

    Paket zaten yüklüyse, yerine kullanarak dotnet tool updatepaketi güncelleştirin.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. dotnet tool list aracının, --global bağımsız değişkeniyle yüklü olduğunu doğrulayın.

    dotnet tool list --global
    

Emülatör görüntüsünü çekin

NoSQL öykünücüsü için Azure Cosmos DB görüntüsünü indirin. Öykünücü görüntüsü büyük olduğundan bu indirme işlemi birkaç dakika sürebilir.

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

Öykünücüyü başlat

Docker'da Cosmos DB öykünücüsü çalıştırın. Öykünücünün ağ uç noktalarını 127.0.0.1 olarak tanıtması ve onların ana makinenizden ulaşılabilir olmasını sağlamak için AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE ayarı gereklidir.

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

Uyarı

Öykünücü, 11 iç bölmeyi başlatır ve hazır hale gelmesi 30 ile 60 saniye arasında sürebilir. Tarayıcınızda açarak https://localhost:8081/_explorer/index.html çalıştığını doğrulayabilirsiniz. Tarayıcınız otomatik olarak imzalanan sertifika hakkında uyarı verebilir; devam etmek güvenlidir.

Öykünücü sertifikasını yükleyin

Cosmos DB öykünücüsü otomatik olarak imzalanan bir SSL sertifikası kullanır. Veri API oluşturucu emülatöre bağlanabilsin diye bu sertifikayı indirip güvenin.

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

Veritabanı ve tohum verilerini oluşturma

Bir veritabanı, kapsayıcı ve örnek öğeler oluşturmak için öykünücünün yerleşik Veri Gezgini'ni kullanın. Ek araç gerekmez; Veri Gezgini öykünücünün bir parçası olarak tarayıcınızda çalışır.

  1. Veri Gezgini'ni adresinde https://localhost:8081/_explorer/index.htmlaçın.

  2. Yeni Veritabanı'ı seçin. Veritabanı kimliği olarak todos girin ve Tamam'ı seçin.

  3. Todos veritabanını genişletin, üç nokta (...) menüsünü seçin ve Yeni Kapsayıcı'yı seçin. Kapsayıcı kimliği olarak todos ve bölüm anahtarı olarak /id girin, ardından Tamam'ı seçin.

  4. Todos kapsayıcısını genişletin ve Öğeler'i seçin. Ardından Yeni Öğe'yi seçin, varsayılan JSON değerini aşağıdaki içerikle değiştirin ve Kaydet'i seçin. Her öğe için yineleyin.

    Öğe 1:

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

    Öğe 2:

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

    Öğe 3:

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

GraphQL şema dosyası oluşturma

NoSQL için Azure Cosmos DB bir GraphQL şema dosyası gerektirir. Aşağıdaki içeriğe sahip adlı schema.gql bir dosya oluşturun.

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

Veri API'si oluşturucusunu yapılandırma

  1. Öykünücünün varsayılan bağlantı dizesiyle yapılandırmayı başlatın.

    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. Todo varlığını ekleyin.

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

Dosyanız dab-config.json artık aşağıdaki örneğe benzer görünmelidir:

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

Tavsiye

dab init ve dab add komutlarını atlayabilir ve dab-config.json ve schema.gql dosyalarını burada gösterilen içerikle doğrudan oluşturabilirsiniz.

API'yi başlatma

Aracı çalıştırmak ve varlığınız için API uç noktaları oluşturmak için kullanın dab start .

dab start

Çıktı, çalışan API'nin adresini içermelidir.

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

Tavsiye

Bu örnekte, uygulama localhost numaralı bağlantı noktasında çalışıyor. Çalışan uygulamanızın farklı bir adresi ve bağlantı noktası olabilir.

API’yi test etme

  1. Tarayıcınızı açın ve GraphQL uç noktasına gidin.

    http://localhost:5000/graphql
    

    Geliştirme modunda, bu URL Nitro GraphQL IDE'yi açar.

  2. Yeni bir belge oluşturun ve tüm yapılacaklar öğelerini almak için aşağıdaki sorguyu çalıştırın.

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. Yanıt üç yapılacaklar öğesini de içermelidir.

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

Temizleme

İşiniz bittiğinde Docker kapsayıcısını durdurun ve kaldırın.

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

Sonraki adım