該應用程序由三個主要組件組成:

該圖顯示了用戶與 Web 應用交互時數據在這些組件之間的流動方式。該應用利用了無服務器計算的優勢,例如可擴展性、可靠性和成本效益。

使用 Terraform 設置開發環境

以下是使用 Terraform 設置開發環境的基本流程概述:

  1. 安裝 Terraform:在本地機器上下載并安裝 Terraform。
  2. 配置您的提供商:在您的 Terraform 配置文件中,指定您想要與之交互的提供商(如 AWS、GCP、Azure)。
  3. 編寫配置:使用 HCL 在配置文件中定義您的基礎設施。
  4. 初始化 Terraformterraform init在您的終端中運行。這將下載必要的提供程序插件。
  5. 規劃和應用:運行terraform plan以檢查將進行哪些更改。然后,運行terraform apply以創建定義的基礎設施。

請記住用實際值替換占位符,并根據您的要求調整代碼。

Azure 函數

Azure Functions 是一種無服務器解決方案,可讓您編寫更少的代碼、維護更少的基礎架構并節省成本。以下是如何使用 Terraform 添加帳戶和開發環境來設置我們的基本基礎架構。

# Terraform code for setting up Azure Functions
# Define the provider
provider "azurerm" {
features {}
}

# Create a resource group
resource "azurerm_resource_group" "rg" {
name = "example-resources"
location = "West Europe"
}

# Create a storage account
resource "azurerm_storage_account" "sa" {
name = "examplestorageacc"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_tier = "Standard"
account_replication_type = "LRS"
}

# Create an app service plan
resource "azurerm_app_service_plan" "asp" {
name = "example-appserviceplan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name

sku {
tier = "Standard"
size = "S1"
}
}

# Create a function app
resource "azurerm_function_app" "fa" {
name = "example-functionapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
app_service_plan_id = azurerm_app_service_plan.asp.id
storage_connection_string = azurerm_storage_account.sa.primary_connection_string
}

讓我們深入研究上述 Terraform 代碼及其創建的資源。

  1. 資源組:在 Azure 中,資源組是部署在 Azure 訂閱中的資源的邏輯容器。這意味著您的所有資源都組織起來,可以作為一個組進行管理,而不是單獨管理。在代碼中,azurerm_resource_group用于定義資源組。
  2. 存儲帳戶:Azure 存儲是一種在云中為數據提供可擴展且安全的存儲的服務。存儲帳戶在 Azure 中為您的數據提供唯一的命名空間。在代碼中,azurerm_storage_account用于定義存儲帳戶。
  3. 應用服務計劃:在 Azure 中,應用服務計劃是一組用于運行 Web 應用的計算資源。這些計算資源類似于傳統 Web 托管中的服務器場。在代碼中,azurerm_app_service_plan用于定義應用服務計劃。
  4. 函數應用程序:Azure Functions 是一種無服務器計算服務,可讓您運行事件觸發的代碼,而無需明確配置或管理基礎結構。函數應用程序可讓您將函數分組為邏輯單元,以便于管理、部署和共享資源。在代碼中,azurerm_function_app用于定義函數應用程序。

在提供的代碼中,您可以將占位符替換為實際值,以便在 Azure 環境中創建這些資源。例如,您可以將“example-resources”替換為資源組的名稱,將“West Europe”替換為要使用的 Azure 區域,將“examplestorageacc”替換為存儲帳戶的名稱,等等。

要創建基礎設施,我們只需執行:terraform apply

Terraform 應用輸出

輸出應如下所示。

構建無服務器 Web 應用程序

現在我們有了工具,讓我們開始構建無服務器 Web 應用程序。

使用 RapidAPI 查找和測試 API

如果您使用 RapidAPI,則需要執行以下手動流程。找到要在 RapidAPI 上使用的 API 后,您通常會使用注冊 RapidAPI 時獲得的API 密鑰來驗證您對 API 的請求。

  1. 訪問 RapidAPI 網站:前往 RapidAPI。這是一個可以找到各種類別的數千個 API 的平臺。
  2. 搜索 API:使用頁面頂部的搜索欄查找符合您需求的 API。您可以按 API 名稱、您要查找的功能或 API 類別進行搜索。
  3. 選擇 API:單擊搜索結果中的 API 以查看其詳細信息。這包括 API 的端點、它接受的參數、它返回的響應以及展示如何使用該 API 的各種語言的代碼片段。
  4. 測試 API:在 API 頁面上,您可以直接測試 API。選擇要使用的端點,填寫任何必需的參數,然后單擊“測試端點”按鈕。RapidAPI 將向 API 發出請求并向您顯示響應。
  5. 獲取 API 密鑰:如果您決定使用 API,則需要訂閱它并獲取 API 密鑰。API 密鑰用于驗證您對 API 的請求。要獲取 API 密鑰,請點擊儀表板右上角的個人資料圖片,然后點擊“我的應用”。點擊您的應用(默認為“默認應用”)即可查看 API 密鑰。

下面是一個示例 Python 代碼片段,展示了如何使用 API 密鑰在 RapidAPI 上請求 API:

import requests

url = "https://weatherapi-com.p.rapidapi.com/current.json"
querystring = {"q": "53.1,-0.13"}
headers = {
"X-RapidAPI-Key": "your-api-key",
"X-RapidAPI-Host": "weatherapi-com.p.rapidapi.com"
}

response = requests.get(url, headers=headers, params=querystring)
print(response.json())

在此代碼片段中,將“ api – name . p . rapidapi . com ”替換為您要使用的 API 的主機,“api-endpoint”替換為 API 的端點,“your-api-key”替換為您實際的 API 密鑰。這將向 API 發送 GET 請求并打印響應。

代碼片段的示例輸出

代碼片段的示例輸出。

注意:請確保您訂閱了在 RapidAPI 上使用的 API

創建 Azure 函數應用程序

這是用于創建 Azure 函數應用和 HTTP 觸發器函數的 Terraform 代碼。這對于創建 Azure 函數應用是必需的。

# Define the provider
provider "azurerm" {
features {}
}

# Create a resource group
resource "azurerm_resource_group" "rg" {
name = "example-resources"
location = "West Europe"
}

# Create a storage account
resource "azurerm_storage_account" "sa" {
name = "examplestorageacc"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_tier = "Standard"
account_replication_type = "LRS"
}

# Create an app service plan
resource "azurerm_app_service_plan" "asp" {
name = "example-appserviceplan"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name

sku {
tier = "Standard"
size = "S1"
}
}

# Create a function app
resource "azurerm_function_app" "fa" {
name = "example-functionapp"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
app_service_plan_id = azurerm_app_service_plan.asp.id
storage_connection_string = azurerm_storage_account.sa.primary_connection_string
}

以下是代碼中的組件:

創建一個簡單的Web應用程序

這是一個 C# Azure 函數的簡單示例,它從 RapidAPI 調用 OpenWeatherMap API。此函數將由 HTTP 請求觸發,并返回指定城市的當前天氣。

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.Net.Http;
using System.Threading.Tasks;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");

string city = req.Query["city"];

using (var client = new HttpClient())
{
var request = new HttpRequestMessage
{
Method = HttpMethod.Get,
RequestUri = new Uri($"https://api.openweathermap.org/data/2.5/weather?q={city}&appid=YOUR_API_KEY"),
Headers =
{
{ "x-rapidapi-key", "YOUR_RAPIDAPI_KEY" },
{ "x-rapidapi-host", "community-open-weather-map.p.rapidapi.com" },
},
};

using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
dynamic data = JsonConvert.DeserializeObject(body);
return new OkObjectResult($"Temperature in {city}: {data.main.temp}°C");
}
}
}

在此代碼中:

請記住將“YOUR_API_KEY”替換為您在 OpenWeatherMap 中獲得的實際 API 密鑰,將“YOUR_RAPIDAPI_KEY”替換為您的 RapidAPI 密鑰。另請注意,出于安全原因,您通常不會在代碼中直接公開 API 密鑰。在實際情況下,您會將這些密鑰安全地存儲在 Azure Key Vault 中或使用托管標識。

部署和測試 Azure 函數應用程序

如果您已經擁有 Azure 函數應用,那就太好了!您可以跳過創建步驟,直接將代碼部署到現有函數應用。以下是使用 Azure CLI 執行此操作的方法:

以下是示例腳本:

# Login to Azure
az login
# Navigate to your local project directory
cd path-to-your-local-function-app
# Deploy the function app
func azure functionapp publish your-existing-function-app-name

用您的實際值替換“path-to-your-local-function-app”和“your-existing-function-app-name”。

成功上傳的示例輸出

成功上傳的示例輸出。

測試 Azure 函數應用

部署函數應用后,可以通過向函數的 URL 發出 HTTP 請求來測試它。URL 通常采用以下格式:https://<Your Function App>.azurewebsites.net/api/<Your Function Name>?code=<your access code>&name=<Enter a name here>

結論:技巧和最佳實踐

與傳統的 Web 開發相比,無服務器計算是一種不同的模式。了解其優點和局限性將有助于您充分利用它。例如,無服務器函數是無狀態的,并且具有最大執行時間,這會影響您設計應用程序的方式。以下是一些其他需要考慮的提示:

使用 Azure FunctionsTerraformRapidAPI 構建無服務器 Web 應用是一種強大而有效的應用程序開發方式。通過遵循這些提示和最佳實踐,您可以確保您的應用程序安全、可擴展且可維護。

文章來源:How to Build a Serverless Web App with Azure Functions and RapidAPI

上一篇:

設計優先 API 開發:神話還是現實?

下一篇:

如何有效鏈接 API 請求
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費