次の方法で共有


クイック スタート: 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 エンドポイント