Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Includes: Hosting integration only —
Client integration not included
Note
This integration is part of the Aspire Community Toolkit and isn't officially supported by the Aspire team.
In this article, you learn how to use the Aspire Data API Builder hosting integration to run Data API Builder as a container.
Hosting integration
To get started with the Aspire Azure Data API Builder hosting integration, install the 📦 CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder NuGet package in the AppHost project.
dotnet add package CommunityToolkit.Aspire.Hosting.Azure.DataApiBuilder For more information, see dotnet add package or Manage package dependencies in .NET applications.
Usage
In the AppHost project, register and consume the Data API Builder integration using the AddDataAPIBuilder extension method to add the Data API Builder container to the application builder.
var builder = DistributedApplication.CreateBuilder(); // Add Data API Builder using dab-config.json var dab = builder.AddDataAPIBuilder("dab"); builder.AddProject<Projects.ExampleProject>() .WithReference(dab); // After adding all resources, run the app... When the Aspire adds a container image to the AppHost, as shown in the preceding example with the mcr.microsoft.com/azure-databases/data-api-builder image, it creates a new Data API Builder instance on your local machin. A reference to the DAB resource (the dab variable) is added to the ExampleProject project.
Configuration
| Parameter | Description |
|---|---|
name | The name of the resource is a required string and it's validated by the ResourceNameAttribute. |
configFilePaths | The paths to the configuration or schema file(s) for Data API builder. These are optional and are available as a params string[], meaning you can omit them altogether, or provide one or more path inline. When omitted, it defaults to "./dab-config.json". |
httpPort | The port number for the Data API Builder container is represented as a an int?. By default, the port is null, Aspire assigns a port when this isn't otherwise provided. |
Data API Builder container image configuration
You can specify custom container registry/image/tag values by using the following APIs chained to the IResourceBuilder<DataApiBuilderContainerResource>:
WithImageRegistry: Pass the desired registry name, such asghcr.iofor the GitHub Container Registry ordocker.iofor Docker.WithImage: Provide the name of the image, such asazure-databases/data-api-builder.WithImageTag: Specify an image tag to use other thanlatest, which is the default in most cases.
Consider the following example that demonstrates chaining these APIs together, to fluently express that the Data API Builder's container image is fully qualified as mcr.microsoft.com/azure-databases/data-api-builder:latest:
var dab = builder.AddDataAPIBuilder("dab") .WithImageRegistry("mcr.microsoft.com") .WithImage("azure-databases/data-api-builder") .WithImageTag("latest"); Database Configuration
If you need to configure your own local database, you can refer to the SQL Server integration documentation.
Once you have your database added as a resource, you can reference it using the following APIs chained to the IResourceBuilder<DataApiBuilderContainerResource>:
var dab = builder.AddDataAPIBuilder("dab") .WithReference(sqlDatabase) .WaitFor(sqlDatabase); The WaitFor method ensures that the database is ready before starting the Data API Builder container.
Referencing the sqlDatabase resource will inject its connection string into the Data API Builder container with the name ConnectionStrings__<DATABASE_RESOURCE_NAME>. Next, update the dab-config.json file to include the connection string for the database:
"data-source": { "connection-string": "@env('ConnectionStrings__<DATABASE_RESOURCE_NAME>')", } Using multiple data sources
You can pass multiple configuration files to the AddDataAPIBuilder method:
var dab = builder.AddDataAPIBuilder("dab", "./dab-config-1.json", "./dab-config-2.json") .WithReference(sqlDatabase1) .WaitFor(sqlDatabase1) .WithReference(sqlDatabase2) .WaitFor(sqlDatabase2); Note
All files are mounted/copied to the same /App folder.