İçeriğe geç
Docs Try Aspire
Docs Try

Data API builder integration

Bu içerik henüz dilinizde mevcut değil.

⭐ Community Toolkit Data API builder logo

This article is the reference for the Aspire Data API Builder hosting integration. It enumerates the AppHost APIs that you use to model a Data API Builder (DAB) resource in your AppHost project. DAB is an open-source tool that generates REST and GraphQL APIs directly from your database schema.

To start building an Aspire app that uses Data API Builder, install the 📦 CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder NuGet package:

Terminal
aspire add CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder

Learn more about aspire add in the command reference.

Or, choose a manual installation approach:

C# — AppHost.cs
#:package CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder@*
XML — AppHost.csproj
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder" Version="*" />

Once you’ve installed the hosting integration in your AppHost project, you can add a Data API Builder resource and reference a database as shown in the following example:

C# — AppHost.cs
var builder = DistributedApplication.CreateBuilder(args);
var sqldb = builder.AddSqlServer("sql")
.AddDatabase("sqldb");
var dab = builder.AddDataAPIBuilder("dab")
.WithReference(sqldb);
builder.AddProject<Projects.ExampleProject>("example-project")
.WithReference(dab);
// After adding all resources, run the app...
builder.Build().Run();

The Data API Builder integration automatically discovers and uses dab-config.json configuration files in your project.

Data API Builder supports multiple configuration files for different databases. To specify multiple configuration files, pass an array of config file paths to AddDataAPIBuilder:

C# — AppHost.cs
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("sqldb");
var postgres = builder.AddPostgres("postgres")
.AddDatabase("postgresdb");
var dab = builder.AddDataAPIBuilder("dab", ["dab-config.SqlServer.json", "dab-config.PostgreSQL.json"])
.WithReference(sql)
.WithReference(postgres);
// After adding all resources, run the app...
builder.Build().Run();

To use a custom Data API Builder container image, use the container image methods:

C# — AppHost.cs
var builder = DistributedApplication.CreateBuilder(args);
var dab = builder.AddDataAPIBuilder("dab")
.WithImageRegistry("myregistry.azurecr.io")
.WithImage("custom-dab")
.WithImageTag("1.0.0");
// After adding all resources, run the app...
builder.Build().Run();

Data API Builder requires references to the databases it exposes. Use WithReference to connect Data API Builder to your databases:

C# — AppHost.cs
var builder = DistributedApplication.CreateBuilder(args);
var sql = builder.AddSqlServer("sql")
.AddDatabase("sqldb");
var cosmos = builder.AddAzureCosmosDB("cosmos")
.AddDatabase("cosmosdb");
var dab = builder.AddDataAPIBuilder("dab")
.WithReference(sql)
.WithReference(cosmos);
// After adding all resources, run the app...
builder.Build().Run();

Data API Builder uses dab-config.json files to define the API. The following is an example configuration:

JSON — dab-config.json
{
"$schema": "https://github.com/Azure/data-api-builder/releases/download/v0.10.23/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "@env('DATABASE_CONNECTION_STRING')"
},
"runtime": {
"rest": {
"enabled": true,
"path": "/api"
},
"graphql": {
"enabled": true,
"path": "/graphql"
}
},
"entities": {
"Product": {
"source": "dbo.Products",
"permissions": [
{
"role": "anonymous",
"actions": ["read"]
}
]
}
}
}

The Aspire integration automatically injects the database connection strings from the referenced resources into the running container.

Data API Builder exposes two endpoints:

  • REST API: Available at /api by default
  • GraphQL API: Available at /graphql by default

Both endpoints are configured in the dab-config.json file.