Skip to content
Get Started for Free

API Management

Azure API Management is a managed service for publishing, securing, transforming, and monitoring APIs. It helps you build a centralized API gateway in front of backend services while applying consistent policies and access controls. API Management is commonly used to expose internal services to external consumers and manage API lifecycle operations. For more information, see Azure API Management overview.

LocalStack for Azure provides a local environment for building and testing applications that make use of Azure API Management. The supported APIs are available on our API Coverage section, which provides information on the extent of API Management’s integration with LocalStack.

This guide is designed for users new to API Management and assumes basic knowledge of the Azure CLI and our azlocal wrapper script.

Launch LocalStack using your preferred method. For more information, see Introduction to LocalStack for Azure. Once the container is running, enable Azure CLI interception by running:

Terminal window
azlocal start-interception

This command points the az CLI away from the public Azure management REST API and toward the LocalStack for Azure emulator API. To revert this configuration, run:

Terminal window
azlocal stop-interception

This reconfigures the az CLI to send commands to the official Azure management REST API.

Create a resource group for your API Management resources:

Terminal window
az group create \
--name rg-apim-demo \
--location westeurope
Output
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-apim-demo",
"location": "westeurope",
"name": "rg-apim-demo",
"properties": {
"provisioningState": "Succeeded"
},
...
}

Create an API Management service in the resource group:

Terminal window
az apim create \
--name apimdoc86 \
--resource-group rg-apim-demo \
--location westeurope \
--publisher-name "LocalStack" \
--publisher-email "dev@localstack.cloud"
Output
{
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-apim-demo/providers/Microsoft.ApiManagement/service/apimdoc86",
"name": "apimdoc86",
"location": "West Europe",
"provisioningState": "Succeeded",
"publisherName": "LocalStack",
"publisherEmail": "dev@localstack.cloud",
"gatewayUrl": "https://apimdoc86.azure-api.net",
"sku": {
"capacity": 1,
"name": "Developer"
},
...
}

Get and list API Management services:

Terminal window
az apim show \
--name apimdoc86 \
--resource-group rg-apim-demo
az apim list \
--resource-group rg-apim-demo

Create an API in API Management:

Terminal window
az apim api create \
--resource-group rg-apim-demo \
--service-name apimdoc86 \
--api-id orders-api \
--path orders \
--display-name "Orders API" \
--protocols https
Output
{
"displayName": "Orders API",
"id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-apim-demo/providers/Microsoft.ApiManagement/service/apimdoc86/apis/orders-api",
"name": "orders-api",
"path": "orders",
"protocols": [
"https"
],
"subscriptionRequired": true,
...
}

Get the API:

Terminal window
az apim api show \
--resource-group rg-apim-demo \
--service-name apimdoc86 \
--api-id orders-api
Output
{
"displayName": "Orders API",
"name": "orders-api",
"path": "orders",
"protocols": [
"https"
],
...
}

Create an operation on the API:

Terminal window
az apim api operation create \
--resource-group rg-apim-demo \
--service-name apimdoc86 \
--api-id orders-api \
--operation-id get-orders \
--display-name "Get orders" \
--method GET \
--url-template "/orders"
Output
{
"displayName": "Get orders",
"method": "GET",
"name": "get-orders",
"type": "Microsoft.ApiManagement/service/apis/operations",
"urlTemplate": "/orders",
...
}

Update the operation and verify the change:

Terminal window
az apim api operation update \
--resource-group rg-apim-demo \
--service-name apimdoc86 \
--api-id orders-api \
--operation-id get-orders \
--set displayName="Get all orders"
az apim api operation show \
--resource-group rg-apim-demo \
--service-name apimdoc86 \
--api-id orders-api \
--operation-id get-orders
Output
{
"displayName": "Get all orders",
"method": "GET",
"name": "get-orders",
"urlTemplate": "/orders",
...
}
OperationImplemented
Page 1 of 0
Was this page helpful?