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

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.

Kubernetes–Limit your environmental impact

Reducing the carbon footprint and CO2 emission of our (cloud) workloads, is a responsibility of all of us. If you are running a Kubernetes cluster, have a look at Kube-Green . kube-green is a simple Kubernetes operator that automatically shuts down (some of) your pods when you don't need them. A single pod produces about 11 Kg CO2eq per year( here the calculation). Reason enough to give it a try! Installing kube-green in your cluster The easiest way to install the operator in your cluster is through kubectl. We first need to install a cert-manager: kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.5/cert-manager.yaml Remark: Wait a minute before you continue as it can take some time before the cert-manager is up & running inside your cluster. Now we can install the kube-green operator: kubectl apply -f https://github.com/kube-green/kube-green/releases/latest/download/kube-green.yaml Now in the namespace where we want t...

Podman– Command execution failed with exit code 125

After updating WSL on one of the developer machines, Podman failed to work. When we took a look through Podman Desktop, we noticed that Podman had stopped running and returned the following error message: Error: Command execution failed with exit code 125 Here are the steps we tried to fix the issue: We started by running podman info to get some extra details on what could be wrong: >podman info OS: windows/amd64 provider: wsl version: 5.3.1 Cannot connect to Podman. Please verify your connection to the Linux system using `podman system connection list`, or try `podman machine init` and `podman machine start` to manage a new Linux VM Error: unable to connect to Podman socket: failed to connect: dial tcp 127.0.0.1:2655: connectex: No connection could be made because the target machine actively refused it. That makes sense as the podman VM was not running. Let’s check the VM: >podman machine list NAME         ...