クイック スタート: NoSQL でデータ API ビルダーを使用する

このクイック スタートでは、Data API Builder (DAB) を使用して、ローカルの Azure Cosmos DB for NoSQL エミュレーター用の GraphQL エンドポイントを作成します。

注

Data API ビルダーの Azure Cosmos DB for NoSQL では、 GraphQL エンドポイントのみがサポートされます。 REST エンドポイントは、このデータベースの種類では使用できません。

前提条件

Data API Builder CLI をインストールする

NuGet から Microsoft.DataApiBuilder パッケージを .NET ツールとしてインストールします。

  1. dotnet tool installを使用して、Microsoft.DataApiBuilder引数を使用して最新バージョンの--globalをインストールします。

    dotnet tool install --global Microsoft.DataApiBuilder
    

    注

    パッケージが既にインストールされている場合は、代わりに dotnet tool update を使用してパッケージを更新します。

    dotnet tool update --global Microsoft.DataApiBuilder
    
  2. dotnet tool list引数を使用して、ツールが--globalと共にインストールされていることを確認します。

    dotnet tool list --global
    

エミュレーター イメージをプルする

Azure Cosmos DB for NoSQL エミュレーター イメージをダウンロードします。 エミュレーター イメージが大きいため、このダウンロードには数分かかる場合があります。

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

エミュレーターを起動する

Docker で Cosmos DB エミュレーターを実行します。 AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE 設定がエミュレーターのネットワーク エンドポイントを広告し、ホスト コンピューターからアクセス可能にするために必要です。

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

注

エミュレーターは 11 個の内部パーティションを起動し、準備が整うの に 30 ~ 60 秒 かかる場合があります。 ブラウザーで https://localhost:8081/_explorer/index.html を開くと、実行されていることを確認できます。 ブラウザーで自己署名証明書に関する警告が表示される場合があります。続行しても安全です。

エミュレーター証明書をインストールする

Cosmos DB エミュレーターでは、自己署名 SSL 証明書を使用します。 データ API ビルダーがエミュレーターに接続できるように、この証明書をダウンロードして信頼します。

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

データベースを作成し、データをシードする

エミュレーターの組み込みのデータ エクスプローラーを使用して、データベース、コンテナー、およびサンプル項目を作成します。 追加のツールは必要ありません。データ エクスプローラーは、エミュレーターの一部としてブラウザーで実行されます。

  1. https://localhost:8081/_explorer/index.htmlでデータ エクスプローラーを開きます。

  2. [ 新しいデータベース] を選択します。 データベース ID として 「todos 」と入力し、[ OK] を選択します。

  3. todos データベースを展開し、省略記号 (...) メニューを選択して、[新しいコンテナー] を選択します。 コンテナー ID として todos 、パーティション キーとして /id を入力し、[ OK] を選択します。

  4. todos コンテナーを展開し、[項目] を選択します。 次に、[ 新しい項目] を選択し、既定の JSON を次の内容に置き換えて、[ 保存] を選択します。 各項目に対して繰り返します。

    項目 1:

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

    項目 2:

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

    項目 3:

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

GraphQL スキーマ ファイルを作成する

Azure Cosmos DB for NoSQL には GraphQL スキーマ ファイルが必要です。 次の内容を含む schema.gql という名前のファイルを作成します。

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

データ API ビルダーの構成

  1. エミュレーターの既定の接続文字列を使用して構成を初期化します。

    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 エンティティを追加します。

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

これで、 dab-config.json ファイルは次の例のようになります。

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

ヒント

dab initコマンドとdab addコマンドをスキップし、dab-config.jsonファイルとschema.gqlファイルをここに示す内容で直接作成できます。

API を起動する

dab startを使用してツールを実行し、エンティティの API エンドポイントを作成します。

dab start

出力には、実行中の API のアドレスが含まれている必要があります。

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

ヒント

この例では、アプリケーションはポート localhost でで実行されています。 実行中のアプリケーションのアドレスとポートが異なる場合があります。

API のテスト

  1. ブラウザーを開き、GraphQL エンドポイントに移動します。

    http://localhost:5000/graphql
    

    開発モードでは、この URL によって Nitro GraphQL IDE が開きます。

  2. 新しいドキュメントを作成し、次のクエリを実行して、すべての todo 項目を取得します。

    query {
      todos {
        items {
          id
          title
          completed
        }
      }
    }
    
  3. 応答には、3 つの 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 }
          ]
        }
      }
    }
    

クリーンアップ

完了したら、Docker コンテナーを停止して削除します。

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

次のステップ

GraphQL エンドポイント