Skip to main content

Azure Static Web App–Data API Builder

As a follow-up on the presentation I did at CloudBrew about Azure Static Web Apps I want to write a series of blog posts.

So far I have shown you 2 different possibilities to integrate an API inside your Azure Static Web App:

  1. You have the Managed Function option where you get a built-in Azure Function with a limited set of functionality for free.
  2. You can link your existing API built using Azure Functions, Azure Container Apps, Azure API Management or Azure App Service.

If we look at most applications, these API’s are used to read and write data in a database. If this is also the case for your application, Azure Static Web App has a 3th possibility; the database connection feature.

Database connection feature

The database connection feature allows you to access a database from your static web app without writing custom server-side code. It is based on the Data API Builder project I talked about in a previous post and allows to create a REST and GraphQL api based on your data source.

Both relational(Azure SQL, MySQL and PostgreSQL) as non-relational (Azure Cosmos DB) databases are supported.

It is the perfect fit if you want an API with simple CRUD operations, built-in authorization, and relationships.

Integrate the Data API Builder into your Azure Static Web App

It all starts by creating a swa-db-connections folder at the root of your repository. Inside this folder you should add a staticwebapp.database.config.json file. This file defines the runtime behavior of the database connection.

Remark: You can use a different folder if you want by changing the data_api_location setting in your build pipeline:

Inside the staticwebapp.database.config.json file, we can specify if we want to expose both a REST and GraphQL endpoint, which Tables or Entities can be accessed, which operations are supported and so on…

Here is an example where I allow all CRUD actions on a dbo.Product table:

Remark: If you want to learn more on how to configure the Data API Builder, have a look at my previous post and the Data API Builder documentation.

Once the configuration file is in place, we can go to the Azure Portal and link a database to our static web app:

  • Go to your Azure Static Web App in the Azure Portal.
  • Open the Database connection section in the Settings.
  • Click on the Link existing database link to any of your environments.
  • On the Link existing database screen, enter the following details:
    • A database type(e.g. Azure SQL Database)
    • The subscription and resource group where the database can be found
    • The Resource name of the database instance and the specific database inside the instance
    • The authentication type
    • Depending on the authentication type, you need to enter different details. In our case we need to provide a username and password.
  • Click on Link to complete the process.

Remark: If your Azure Static Web App isn’t able to connect to your database, check that Allow Azure services and resources to access this server is checked in the Networking –> Exceptions section of your database server.

Calling the API

We can now call the API through the /data-api endpoint. As we have set in our configuration that anonymous access is allowed, we can directly call the endpoint without authenticating first.

Here is the call using the REST endpoint:

And here we are using the GraphQL endpoint(notice that we get introspection for free):

Remark: The first call can take a little bit longer so certainly implement a retry strategy.

More information

Connecting to a database with Azure Static Web Apps | Microsoft Learn

Popular posts from this blog

DevToys–A swiss army knife for developers

As a developer there are a lot of small tasks you need to do as part of your coding, debugging and testing activities.  DevToys is an offline windows app that tries to help you with these tasks. Instead of using different websites you get a fully offline experience offering help for a large list of tasks. Many tools are available. Here is the current list: Converters JSON <> YAML Timestamp Number Base Cron Parser Encoders / Decoders HTML URL Base64 Text & Image GZip JWT Decoder Formatters JSON SQL XML Generators Hash (MD5, SHA1, SHA256, SHA512) UUID 1 and 4 Lorem Ipsum Checksum Text Escape / Unescape Inspector & Case Converter Regex Tester Text Comparer XML Validator Markdown Preview Graphic Color B

Help! I accidently enabled HSTS–on localhost

I ran into an issue after accidently enabling HSTS for a website on localhost. This was not an issue for the original website that was running in IIS and had a certificate configured. But when I tried to run an Angular app a little bit later on http://localhost:4200 the browser redirected me immediately to https://localhost . Whoops! That was not what I wanted in this case. To fix it, you need to go the network settings of your browser, there are available at: chrome://net-internals/#hsts edge://net-internals/#hsts brave://net-internals/#hsts Enter ‘localhost’ in the domain textbox under the Delete domain security policies section and hit Delete . That should do the trick…

Azure DevOps/ GitHub emoji

I’m really bad at remembering emoji’s. So here is cheat sheet with all emoji’s that can be used in tools that support the github emoji markdown markup: All credits go to rcaviers who created this list.