DEV Community

Sarah Lean 🏴󠁧󠁢
Sarah Lean 🏴󠁧󠁢

Posted on • Originally published at techielass.com

Retrieving API Fields from an Azure Static Web App Using a Bash Script

Retrieving API Fields from an Azure Static Web App Using a Bash Script

Azure Static Web Apps provide a streamlined full-stack development experience for static site hosting and serverless API endpoints. If you need to retrieve detailed configuration information about your Azure Static Web App, you can use the Azure CLI combined with a simple Bash script to automate this task.

In this blog post, I'll walk you through a Bash script that retrieves all the API fields from an Azure Static Web App.

Prerequisites

Before running the script, ensure you have the following:

The Bash Script

Below is the Bash script that retrieves all the API fields from an Azure Static Web App.

#!/bin/bash

# Variables
subscriptionId="<subscriptionId>"
resourceGroup="<resourceGroup>"
appName="<appName>"
apiVersion="2023-12-01"

# Get the access token using Azure CLI
echo "Retrieving access token..."
accessToken=$(az account get-access-token --query accessToken --output tsv)
if [-z "$accessToken"]; then
    echo "Error: Unable to retrieve access token. Make sure you are logged in with Azure CLI."
    exit 1
fi

# URL for the GET request
url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}"

echo "Making GET request to URL: $url"

# Make the GET request and store the response
response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \
    -H "Authorization: Bearer $accessToken" \
    -H "Content-Type: application/json")

# Extract HTTP status code from response
http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://')

# Extract the response body
response_body=$(echo "$response" | sed '$d')

# Check the HTTP status code
if ["$http_status" -ne 200]; then
    echo "Error: Received HTTP status code $http_status"
    echo "Response body: $response_body"
    exit 1
fi

# Print the entire response body
echo "Response body:"
echo "$response_body" | jq .

Enter fullscreen mode Exit fullscreen mode

Script Explanation

Let's take a look at what each section of the script means.

Variable Definitions : The script starts by defining the variables 'subscriptionId', 'resourceGroup', 'appName', and 'apiVersion'. Replace the placeholders with your actual Azure subscription ID, resource group name, and app name.

Access Token Retrieval :

accessToken=$(az account get-access-token --query accessToken --output tsv)

Enter fullscreen mode Exit fullscreen mode

The script retrieves an access token using the Azure CLI. This token is required for authentication when making API requests to Azure.

URL Definition :

url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}"

Enter fullscreen mode Exit fullscreen mode

The script constructs the URL for the GET request using the provided subscription ID, resource group, app name, and API version.

Making the GT Request :

response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \
-H "Authorization: Bearer $accessToken" \
-H "Content-Type: application/json")

Enter fullscreen mode Exit fullscreen mode

The script makes a GET request to the constructed URL using curl. The -s flag suppresses progress output, and -w "\nHTTP_STATUS_CODE:%{http_code}" appends the HTTP status code to the response.

HTTP Status Code Handling :

http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://')
response_body=$(echo "$response" | sed '$d')

Enter fullscreen mode Exit fullscreen mode

The script extracts the HTTP status code and the response body from the curl output. If the HTTP status code is not 200, it prints an error message and exits.

Printing the Response :

echo "$response_body" | jq .

Enter fullscreen mode Exit fullscreen mode

The script uses jq to pretty-print the JSON response body, which contains all the API fields of the Azure Static Web App.

Running the Script

  • Open your web browser.
  • Navigate to https://shell.azure.com/
  • Log in with your Azure account credentials.
    • - If you don't have an account, you will need to create one.

Retrieving API Fields from an Azure Static Web App Using a Bash Script
Azure Cloud Shell

  • Select the Bash environment (if prompted to choose between Bash and PowerShell).
  • To create a new file to store your script in, type the following command and press Enter:
touch get_static_web_app_details.sh

Enter fullscreen mode Exit fullscreen mode

Retrieving API Fields from an Azure Static Web App Using a Bash Script
Azure Cloud Shell

  • To open the VS Code editor built into the Azure Cloud Shell, type in the following command:
code get_static_web_app_details.sh

Enter fullscreen mode Exit fullscreen mode
  • Copy your bash script from above into the new file you've created.

Retrieving API Fields from an Azure Static Web App Using a Bash Script
Azure Cloud Shell

  • After pasting your script, save the file by using the command Ctrl + S (Cmd + S on Mac).
  • To close VSCode and return to the Bash shell, use the command Ctrl + Q.

We now need to make the file executable within our environment. Type in the following command:

chmod +x get_static_web_app_details.sh

Enter fullscreen mode Exit fullscreen mode

It's now time to run the script, we can do this by typing the command:

./get_static_web_app_details.sh

Enter fullscreen mode Exit fullscreen mode

Retrieving API Fields from an Azure Static Web App Using a Bash Script
Azure Cloud Shell

Conclusion

This Bash script provides a simple and effective way to retrieve all the API fields from your Azure Static Web App. By leveraging the Azure CLI and curl, you can automate the retrieval of detailed configuration information, which can be helpful for monitoring, troubleshooting, or documenting your web app's setup.

Top comments (0)