Hướng Dẫn Sử Dụng Azure APIs Hiệu Quả

Ashley Innocent

Ashley Innocent

24 tháng 3 2026

Hướng Dẫn Sử Dụng Azure APIs Hiệu Quả

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

TL;DR (Tóm tắt nhanh)

Các API của Azure cho phép bạn truy cập theo chương trình các dịch vụ đám mây của Microsoft - lưu trữ, điện toán, cơ sở dữ liệu, AI và nhiều hơn nữa. Bạn xác thực bằng Azure Active Directory (Entra ID), lấy mã truy cập (access token) và gọi các điểm cuối REST. Để kiểm thử và tài liệu, hãy sử dụng Apidog để lưu các cuộc gọi API của bạn, xác thực phản hồi dựa trên lược đồ và chia sẻ bộ sưu tập (collections) với nhóm của bạn.

Giới thiệu

Microsoft Azure có hơn 200 dịch vụ. Mỗi dịch vụ đều có một API. Hầu hết các nhà phát triển sẽ chạm vào ít nhất một vài trong số đó - có thể là Azure Blob Storage cho tệp, Azure Functions cho serverless, hoặc Azure OpenAI cho LLM.

Vấn đề là gì? Tài liệu của Azure rất lớn và rải rác. Bạn có thể mất hàng giờ để tìm đúng điểm cuối (endpoint), tìm ra cách xác thực và gỡ lỗi tại sao yêu cầu của bạn trả về lỗi 401 Unauthorized.

Hướng dẫn này tập trung vào các API mà bạn thực sự sẽ sử dụng. Không phải 200 dịch vụ. Mà là 5-10 dịch vụ cung cấp sức mạnh cho hầu hết các ứng dụng. Bạn sẽ tìm hiểu các mẫu xác thực, những lỗi thường gặp và cách kiểm thử các tích hợp Azure của bạn trước khi triển khai.

💡
Nếu bạn đang xây dựng ứng dụng dựa trên API của Azure, Apidog sẽ giúp bạn thiết kế, kiểm thử và tạo tài liệu cho các tích hợp đó. Bạn có thể lưu các cuộc gọi API Azure của mình dưới dạng bộ sưu tập, thêm biến môi trường cho các đăng ký (subscriptions) khác nhau và xác thực rằng các phản hồi khớp với các lược đồ mong đợi. Nó giúp phát hiện lỗi cấu hình trước khi chúng gây ra sự cố trong môi trường production.
button

Kiểm thử API Azure của bạn với Apidog - miễn phí

Sau khi hoàn thành hướng dẫn này, bạn sẽ có thể:

Vấn đề xác thực (và cách giải quyết)

Mỗi cuộc gọi API Azure đều cần xác thực. Nếu làm sai bước này, mọi thứ khác đều thất bại. Đây là nơi hầu hết các nhà phát triển gặp khó khăn.

Hình ảnh minh họa sơ đồ luồng xác thực của Azure.

Azure Active Directory / Microsoft Entra ID

Azure sử dụng OAuth 2.0 để xác thực API. Bạn không gửi tên người dùng và mật khẩu. Bạn gửi một mã truy cập (access token) chứng minh bạn là ai và bạn có thể làm gì.

Luồng hoạt động như sau:

  1. Đăng ký một ứng dụng trong Azure AD (Entra ID)
  2. Lấy ID ứng dụng (client ID) và mã bí mật ứng dụng (client secret)
  3. Yêu cầu mã truy cập từ điểm cuối token của Azure
  4. Bao gồm mã đó trong các cuộc gọi API của bạn

Bước 1: Đăng ký một ứng dụng

Vào Azure Portal → Microsoft Entra ID → App registrations → New registration.

Đặt tên cho nó, chọn “Accounts in this organizational directory only” cho các ứng dụng nội bộ, và đăng ký. Bạn sẽ nhận được:

Bước 2: Tạo mã bí mật ứng dụng

Trong đăng ký ứng dụng của bạn, vào Certificates & secrets → New client secret. Sao chép giá trị bí mật ngay lập tức. Bạn sẽ không thấy nó nữa.

Bước 3: Gán quyền

Vào API permissions → Add a permission. Đối với Azure Storage, chọn “Azure Storage” → “user_impersonation”. Đối với Azure Management APIs, chọn “Azure Service Management” → “user_impersonation”.

Bước 4: Lấy mã truy cập

curl -X POST "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "client_id={client-id}" \
  -d "client_secret={client-secret}" \
  -d "scope=https://storage.azure.com/.default" \
  -d "grant_type=client_credentials"

Phản hồi:

{
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs...",
  "expires_in": 3599,
  "token_type": "Bearer"
}

Bước 5: Sử dụng mã token

curl -X GET "https://youraccount.blob.core.windows.net/container?restype=container&comp=list" \
  -H "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs..." \
  -H "x-ms-version: 2023-01-03"

Sử dụng Azure SDK thay vì HTTP thô

Đối với mã sản xuất (production code), hãy sử dụng Azure SDK. Nó xử lý việc làm mới token, thử lại và tuần tự hóa.

import { DefaultAzureCredential } from '@azure/identity'
import { BlobServiceClient } from '@azure/storage-blob'

// Tự động sử dụng đăng nhập Azure CLI hoặc biến môi trường của bạn
const credential = new DefaultAzureCredential()
const blobServiceClient = new BlobServiceClient(
  'https://youraccount.blob.core.windows.net',
  credential
)

// Liệt kê các vùng chứa (containers)
for await (const container of blobServiceClient.listContainers()) {
  console.log(container.name)
}

Nhưng để kiểm thử, gỡ lỗi và tạo tài liệu, bạn cần hiểu các cuộc gọi HTTP thô. Đó là nơi Apidog phát huy tác dụng.

API của Azure Storage

Azure Storage là dịch vụ Azure được sử dụng phổ biến nhất. Nó bao gồm:

API của Blob Storage

Liệt kê các vùng chứa (containers):

GET https://{account}.blob.core.windows.net/?comp=list
Authorization: Bearer {token}
x-ms-version: 2023-01-03

Tạo một vùng chứa (container):

PUT https://{account}.blob.core.windows.net/{container}?restype=container
Authorization: Bearer {token}
x-ms-version: 2023-01-03

Tải lên một blob:

PUT https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03
Content-Type: text/plain

Hello, Azure Blob Storage!

Tải xuống một blob:

GET https://{account}.blob.core.windows.net/{container}/{blob}
Authorization: Bearer {token}
x-ms-version: 2023-01-03

Kiểm thử với Apidog

Các API của Azure Storage yêu cầu các tiêu đề cụ thể (x-ms-version, định dạng ủy quyền chính xác). Apidog giúp bạn:

  1. Lưu chúng dưới dạng các yêu cầu có thể tái sử dụng
  2. Sử dụng biến môi trường cho tên tài khoản và mã token
  3. Xác thực các phản hồi khớp với các lược đồ mong đợi

Thiết kế và kiểm thử API Azure Storage với Apidog

API của Azure Compute

Azure Compute cho phép bạn quản lý máy ảo, vùng chứa và các chức năng serverless.

API của Azure Functions

Azure Functions có một REST API cho các hoạt động quản lý.

Liệt kê các hàm trong một ứng dụng hàm (function app):

GET https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions?api-version=2023-01-01
Authorization: Bearer {management-token}

Kích hoạt một hàm (HTTP trigger):

POST https://{app-name}.azurewebsites.net/api/{function-name}
Content-Type: application/json

{
  "name": "Azure",
  "message": "Hello from API"
}

Lấy khóa hàm (function keys):

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Web/sites/{app-name}/functions/{function-name}/listKeys?api-version=2023-01-01
Authorization: Bearer {management-token}

API của Máy ảo (Virtual Machines)

Liệt kê các máy ảo:

GET https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.Compute/virtualMachines?api-version=2023-07-01
Authorization: Bearer {management-token}

Khởi động một máy ảo:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/start?api-version=2023-07-01
Authorization: Bearer {management-token}

Dừng một máy ảo:

POST https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{rg}/providers/Microsoft.Compute/virtualMachines/{vm-name}/powerOff?api-version=2023-07-01
Authorization: Bearer {management-token}

API của Dịch vụ AI của Azure

Azure lưu trữ các mô hình OpenAI và cung cấp các dịch vụ nhận thức cho thị giác, giọng nói và ngôn ngữ.

API của Azure OpenAI

Lấy hoàn thành (completions):

POST https://{resource-name}.openai.azure.com/openai/deployments/{deployment-id}/chat/completions?api-version=2024-02-15-preview
api-key: {your-api-key}
Content-Type: application/json

{
  "messages": [
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "What is Azure?"}
  ],
  "max_tokens": 500
}

Liệt kê các triển khai (deployments):

GET https://{resource-name}.openai.azure.com/openai/deployments?api-version=2024-02-15-preview
api-key: {your-api-key}

API của Cognitive Services

Text Analytics - Phân tích cảm xúc (Sentiment):

POST https://{resource-name}.cognitiveservices.azure.com/text/analytics/v3.1/sentiment
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/json

{
  "documents": [
    {
      "id": "1",
      "language": "en",
      "text": "I love Azure APIs. They work great!"
    }
  ]
}

Computer Vision - Phân tích hình ảnh:

POST https://{resource-name}.cognitiveservices.azure.com/vision/v3.2/analyze?visualFeatures=Description,Tags
Ocp-Apim-Subscription-Key: {subscription-key}
Content-Type: application/octet-stream

[binary image data]

Kiểm thử API Azure với Apidog

Các API của Azure có cơ chế xác thực phức tạp và yêu cầu các tiêu đề chính xác. Kiểm thử thủ công với curl dễ dẫn đến sai sót. Apidog giải quyết vấn đề này bằng cách:

1. Quản lý môi trường

Các API của Azure trải rộng trên nhiều điểm cuối:

Tạo các môi trường trong Apidog cho từng loại:

# Môi trường phát triển (Development)
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: devstorage
OPENAI_RESOURCE: dev-openai

# Môi trường sản xuất (Production)
MANAGEMENT_TOKEN: eyJ0eXAiOiJKV1Qi...
STORAGE_ACCOUNT: prodstorage
OPENAI_RESOURCE: prod-openai

2. Các kịch bản trước yêu cầu để làm mới mã token

Mã token Azure hết hạn sau 1 giờ. Thêm một kịch bản trước yêu cầu:

// Kiểm tra xem token đã hết hạn chưa
const tokenExpiry = pm.environment.get('token_expiry')
const now = Date.now() / 1000

if (!tokenExpiry || now >= tokenExpiry) {
  // Yêu cầu token mới
  const response = await pm.sendRequest({
    url: 'https://login.microsoftonline.com/' + pm.environment.get('tenant_id') + '/oauth2/v2.0/token',
    method: 'POST',
    header: { 'Content-Type': 'application/x-www-form-urlencoded' },
    body: {
      mode: 'urlencoded',
      urlencoded: [
        { key: 'client_id', value: pm.environment.get('client_id') },
        { key: 'client_secret', value: pm.environment.get('client_secret') },
        { key: 'scope', value: 'https://management.azure.com/.default' },
        { key: 'grant_type', value: 'client_credentials' }
      ]
    }
  })
  
  const data = response.json()
  pm.environment.set('management_token', data.access_token)
  pm.environment.set('token_expiry', now + data.expires_in)
}

3. Xác thực phản hồi

Xác thực rằng các phản hồi của Azure khớp với các lược đồ mong đợi:

// Kiểm tra xem danh sách blob có trả về cấu trúc mong đợi hay không
pm.test('Response has containers', () => {
  const xml = pm.response.text()
  pm.expect(xml).to.include('<Containers>')
  pm.expect(xml).to.include('<Container>')
})

pm.test('Response is valid XML', () => {
  pm.response.to.be.ok
  pm.response.to.have.header('Content-Type', 'application/xml')
})

Bắt đầu kiểm thử API Azure với Apidog - miễn phí

Các lỗi thường gặp và cách khắc phục

401 Unauthorized

Nguyên nhân: Token không hợp lệ hoặc đã hết hạn.

Khắc phục:

  1. Kiểm tra xem token chưa hết hạn (expires_in thường là 3600 giây)
  2. Xác minh scope khớp với API bạn đang gọi
  3. Đảm bảo đăng ký ứng dụng có quyền hạn chính xác

403 Forbidden

Nguyên nhân: Token hợp lệ nhưng thiếu quyền hạn.

Khắc phục:

  1. Truy cập tài nguyên trong Azure Portal
  2. Kiểm tra Access control (IAM)
  3. Thêm gán vai trò (role assignment) cho service principal của ứng dụng của bạn

404 Not Found

Nguyên nhân: Sai điểm cuối (endpoint) hoặc tài nguyên không tồn tại.

Khắc phục:

  1. Xác minh tên tài nguyên trong URL
  2. Kiểm tra phiên bản API trong chuỗi truy vấn (query string)
  3. Đảm bảo tài nguyên tồn tại trong nhóm tài nguyên (resource group) chính xác

429 Too Many Requests

Nguyên nhân: Bạn đã đạt đến giới hạn tỷ lệ của Azure.

Khắc phục:

  1. Thực hiện exponential backoff (thời gian chờ tăng dần theo cấp số nhân)
  2. Kiểm tra tiêu đề x-ms-ratelimit-remaining
  3. Cân nhắc gộp các yêu cầu thành lô (batching requests)
async function callWithRetry(fn, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fn()
    } catch (error) {
      if (error.statusCode === 429) {
        const delay = Math.pow(2, i) * 1000
        await new Promise(resolve => setTimeout(resolve, delay))
      } else {
        throw error
      }
    }
  }
}

Các lựa chọn thay thế và so sánh

Tính năng API của Azure API của AWS API của GCP
Xác thực Azure AD (OAuth 2.0) IAM (Sig v4) OAuth 2.0
Chất lượng SDK Xuất sắc Xuất sắc Xuất sắc
Tài liệu Toàn diện nhưng rải rác Theo dịch vụ cụ thể Theo dịch vụ cụ thể
Giới hạn tỷ lệ Theo mỗi đăng ký (subscription) Theo mỗi dịch vụ Theo mỗi dự án
Bậc miễn phí 12 tháng + luôn miễn phí 12 tháng Luôn miễn phí + tín dụng

Xác thực của Azure phức tạp hơn phương pháp dựa trên chữ ký của AWS nhưng tích hợp tốt hơn với các hệ thống danh tính của doanh nghiệp.

Các trường hợp sử dụng thực tế

Nền tảng thương mại điện tử. Một giải pháp thay thế Shopify sử dụng Azure Blob Storage cho hình ảnh sản phẩm, Azure Functions cho các webhook xử lý đơn hàng và Azure OpenAI cho mô tả sản phẩm. Họ kiểm thử tất cả các cuộc gọi API trong Apidog trước khi triển khai các thay đổi.

SaaS chăm sóc sức khỏe. Một hệ thống hồ sơ y tế sử dụng Azure Cosmos DB cho dữ liệu bệnh nhân, Azure Functions để xử lý tin nhắn HL7 và Azure Key Vault cho các bí mật. Kiểm thử API đảm bảo tuân thủ HIPAA bằng cách xác thực mọi lược đồ phản hồi.

Startup AI. Một công ty xây dựng các tác nhân AI sử dụng Azure OpenAI cho các cuộc gọi LLM, Azure Storage cho dữ liệu đào tạo và Azure Container Apps để triển khai. Họ sử dụng Apidog để mô phỏng các API Azure trong quá trình phát triển cục bộ.

Tổng kết

Dưới đây là những gì bạn đã học:

Các bước tiếp theo của bạn:

  1. Đăng ký một ứng dụng trong Azure AD và lấy thông tin xác thực của bạn
  2. Yêu cầu mã truy cập bằng luồng client credentials
  3. Thực hiện cuộc gọi API Azure Storage đầu tiên của bạn
  4. Lưu cuộc gọi đó trong Apidog dưới dạng yêu cầu có thể tái sử dụng
  5. Xây dựng một bộ sưu tập (collection) cho các API Azure của dự án của bạn

Kiểm thử API Azure với Apidog - miễn phí

FAQ (Các câu hỏi thường gặp)

Sự khác biệt giữa Azure AD và Microsoft Entra ID là gì?Chúng là một. Microsoft đã đổi thương hiệu Azure Active Directory thành Microsoft Entra ID vào năm 2023. Bạn sẽ thấy cả hai tên trong tài liệu. Sử dụng Entra ID khi tạo tài liệu mới, nhưng hãy biết rằng Azure AD vẫn phổ biến trong các bài viết và mã cũ hơn.

Làm cách nào để lấy khóa API cho Azure OpenAI?Vào Azure Portal → Azure OpenAI → tài nguyên của bạn → Keys and Endpoint. Bạn sẽ thấy hai khóa. Khóa nào cũng hoạt động. Hãy tạo lại chúng định kỳ để đảm bảo bảo mật. Không giống như API công khai của OpenAI, Azure OpenAI yêu cầu đăng ký Azure và triển khai tài nguyên trước.

Sự khác biệt giữa management.azure.com và các điểm cuối dành riêng cho dịch vụ là gì?management.azure.com là điểm cuối Azure Resource Manager. Nó dành cho các hoạt động CRUD trên chính các tài nguyên Azure (tạo máy ảo, xóa tài khoản lưu trữ). Các điểm cuối dành riêng cho dịch vụ ({account}.blob.core.windows.net, {resource}.openai.azure.com) dành cho việc sử dụng các tài nguyên đó (tải lên tệp, tạo văn bản). Bạn cần các mã token khác nhau cho mỗi loại.

Mã truy cập Azure tồn tại trong bao lâu?Thông thường là 1 giờ (3600 giây). Bạn có thể yêu cầu mã token mới trước khi mã token cũ hết hạn. Sử dụng trường expires_in từ phản hồi token để biết khi nào cần làm mới. Đừng yêu cầu mã token mới cho mỗi cuộc gọi API - điều đó không hiệu quả.

Tôi có thể sử dụng managed identities thay vì client secrets không?Có, và bạn nên làm như vậy đối với các tải công việc production đang chạy trong Azure. Managed identities loại bỏ nhu cầu lưu trữ client secrets. Chúng hoạt động với Azure VMs, Functions, Container Apps và AKS. Đối với phát triển cục bộ, hãy sử dụng Azure CLI (az login) hoặc các biến môi trường với client secrets.

Tại sao cuộc gọi API của tôi hoạt động trong Postman nhưng lại thất bại trong code?Kiểm tra các tiêu đề (headers). API của Azure phân biệt chữ hoa chữ thường đối với tên tiêu đề. Postman có thể thêm các tiêu đề mà bạn không để ý. So sánh yêu cầu thô từ Postman với mã của bạn bằng một công cụ như Fiddler hoặc công cụ kiểm tra yêu cầu của Apidog.

Cách tốt nhất để kiểm thử API Azure cục bộ mà không cần đăng ký Azure là gì?Bạn không thể kiểm thử hoàn toàn nếu không có đăng ký, nhưng bạn có thể sử dụng trình giả lập cục bộ của Azure:

Cách tốt nhất để xử lý lỗi API Azure là gì?Azure trả về JSON lỗi chi tiết. Phân tích các trường error.codeerror.message. Các mã phổ biến:

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API