Mulai cepat: Menggunakan penyusun API Data dengan NoSQL

** Dalam panduan cepat ini, Anda membuat endpoint GraphQL untuk emulator lokal Azure Cosmos DB for NoSQL menggunakan penyusun API Data (DAB).

Nota

Azure Cosmos DB for NoSQL di Data API builder hanya mendukung endpoint GraphQL. Titik akhir REST tidak tersedia untuk jenis database ini.

Prasyarat

Menginstal pembangun API Data CLI

Instal paket Microsoft.DataApiBuilder dari NuGet sebagai alat .NET.

  1. Gunakan dotnet tool install untuk menginstal versi terbaru dari Microsoft.DataApiBuilder dengan argumen --global.

    dotnet tool install --global Microsoft.DataApiBuilder
    

    Nota

    Jika paket sudah diinstal, perbarui paket sebagai gantinya menggunakan dotnet tool update.

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. Verifikasi bahwa alat diinstal dengan dotnet tool list menggunakan argumen --global.

    dotnet tool list --global
    

Menarik gambar emulator

Unduh gambar emulator Azure Cosmos DB for NoSQL. Pengunduhan ini dapat memakan waktu beberapa menit karena gambar emulator besar.

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

Memulai emulator

Jalankan emulator Cosmos DB di Docker. Pengaturan AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE diperlukan agar emulator mengumumkan 127.0.0.1 untuk titik akhir jaringannya, membuatnya dapat dijangkau dari mesin host Anda.

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

Nota

Emulator memulai 11 partisi internal dan dapat memakan waktu 30 hingga 60 detik untuk menjadi siap. Anda dapat memverifikasinya berjalan dengan membuka https://localhost:8081/_explorer/index.html di browser Anda. Browser Anda mungkin memperingatkan tentang sertifikat yang ditandatangani sendiri—aman untuk melanjutkan.

Menginstal sertifikat emulator

Emulator Cosmos DB menggunakan sertifikat SSL yang ditandatangani sendiri. Unduh dan percayai sertifikat ini sehingga penyusun API Data dapat terhubung ke emulator.

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

Membuat database dan data benih

Gunakan Data Explorer bawaan emulator untuk membuat database, kontainer, dan item sampel. Tidak diperlukan alat tambahan—Data Explorer berjalan di browser Anda sebagai bagian dari emulator.

  1. Buka Data Explorer di https://localhost:8081/_explorer/index.html.

  2. Pilih Database Baru. Masukkan todos sebagai id database dan pilih OK.

  3. Perluas database todos , pilih menu elipsis (...), dan pilih Kontainer Baru. Masukkan todos sebagai id kontainer dan /id sebagai kunci partisi, lalu pilih OK.

  4. Perluas kontainer todos dan pilih Item. Lalu pilih Item Baru, ganti JSON default dengan konten berikut, dan pilih Simpan. Ulangi untuk setiap item.

    Item 1:

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

    Item 2:

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

    Item 3:

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

Membuat file skema GraphQL

Azure Cosmos DB for NoSQL memerlukan file skema GraphQL. Buat file bernama schema.gql dengan konten berikut.

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

Mengonfigurasi pembuat API Data

  1. Inisialisasi konfigurasi dengan string koneksi default emulator.

    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. Tambahkan entitas Todo .

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

File Anda dab-config.json sekarang akan terlihat mirip dengan contoh berikut:

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

Petunjuk / Saran

Anda dapat melewati perintah dab init dan dab add dan langsung membuat file dab-config.json dan schema.gql dengan konten yang ditampilkan di sini.

Mulai API

Gunakan dab start untuk menjalankan alat dan membuat titik akhir API untuk entitas Anda.

dab start

Output harus menyertakan alamat API yang sedang berjalan.

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

Petunjuk / Saran

Dalam contoh ini, aplikasi berjalan pada localhost port 5000. Aplikasi anda yang sedang berjalan mungkin memiliki alamat dan port yang berbeda.

Menguji API

  1. Buka browser Anda dan navigasikan ke titik akhir GraphQL.

    http://localhost:5000/graphql
    

    Dalam mode Pengembangan, URL ini membuka IDE Nitro GraphQL.

  2. Buat dokumen baru dan jalankan kueri berikut untuk mengambil semua item todo.

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. Respons harus mencakup ketiga item todo.

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

Pembersihan

Hentikan dan hapus kontainer Docker setelah Selesai.

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

Langkah selanjutnya