該應(yīng)用程序由三個(gè)主要組件組成:

該圖顯示了用戶與 Web 應(yīng)用交互時(shí)數(shù)據(jù)在這些組件之間的流動(dòng)方式。該應(yīng)用利用了無(wú)服務(wù)器計(jì)算的優(yōu)勢(shì),例如可擴(kuò)展性、可靠性和成本效益。

使用 Terraform 設(shè)置開(kāi)發(fā)環(huán)境

以下是使用 Terraform 設(shè)置開(kāi)發(fā)環(huán)境的基本流程概述:

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

請(qǐng)記住用實(shí)際值替換占位符,并根據(jù)您的要求調(diào)整代碼。

Azure 函數(shù)

Azure Functions 是一種無(wú)服務(wù)器解決方案,可讓您編寫更少的代碼、維護(hù)更少的基礎(chǔ)架構(gòu)并節(jié)省成本。以下是如何使用 Terraform 添加帳戶和開(kāi)發(fā)環(huán)境來(lái)設(shè)置我們的基本基礎(chǔ)架構(gòu)。

# 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 代碼及其創(chuàng)建的資源。

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

在提供的代碼中,您可以將占位符替換為實(shí)際值,以便在 Azure 環(huán)境中創(chuàng)建這些資源。例如,您可以將“example-resources”替換為資源組的名稱,將“West Europe”替換為要使用的 Azure 區(qū)域,將“examplestorageacc”替換為存儲(chǔ)帳戶的名稱,等等。

要?jiǎng)?chuàng)建基礎(chǔ)設(shè)施,我們只需執(zhí)行:terraform apply

Terraform 應(yīng)用輸出

輸出應(yīng)如下所示。

構(gòu)建無(wú)服務(wù)器 Web 應(yīng)用程序

現(xiàn)在我們有了工具,讓我們開(kāi)始構(gòu)建無(wú)服務(wù)器 Web 應(yīng)用程序。

使用 RapidAPI 查找和測(cè)試 API

如果您使用 RapidAPI,則需要執(zhí)行以下手動(dòng)流程。找到要在 RapidAPI 上使用的 API 后,您通常會(huì)使用注冊(cè) RapidAPI 時(shí)獲得的API 密鑰來(lái)驗(yàn)證您對(duì) API 的請(qǐng)求。

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

下面是一個(gè)示例 Python 代碼片段,展示了如何使用 API 密鑰在 RapidAPI 上請(qǐng)求 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 的主機(jī),“api-endpoint”替換為 API 的端點(diǎn),“your-api-key”替換為您實(shí)際的 API 密鑰。這將向 API 發(fā)送 GET 請(qǐng)求并打印響應(yīng)。

代碼片段的示例輸出

代碼片段的示例輸出。

注意:請(qǐng)確保您訂閱了在 RapidAPI 上使用的 API

創(chuàng)建 Azure 函數(shù)應(yīng)用程序

這是用于創(chuàng)建 Azure 函數(shù)應(yīng)用和 HTTP 觸發(fā)器函數(shù)的 Terraform 代碼。這對(duì)于創(chuàng)建 Azure 函數(shù)應(yīng)用是必需的。

# 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
}

以下是代碼中的組件:

創(chuàng)建一個(gè)簡(jiǎn)單的Web應(yīng)用程序

這是一個(gè) C# Azure 函數(shù)的簡(jiǎn)單示例,它從 RapidAPI 調(diào)用 OpenWeatherMap API。此函數(shù)將由 HTTP 請(qǐng)求觸發(fā),并返回指定城市的當(dāng)前天氣。

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");
}
}
}

在此代碼中:

請(qǐng)記住將“YOUR_API_KEY”替換為您在 OpenWeatherMap 中獲得的實(shí)際 API 密鑰,將“YOUR_RAPIDAPI_KEY”替換為您的 RapidAPI 密鑰。另請(qǐng)注意,出于安全原因,您通常不會(huì)在代碼中直接公開(kāi) API 密鑰。在實(shí)際情況下,您會(huì)將這些密鑰安全地存儲(chǔ)在 Azure Key Vault 中或使用托管標(biāo)識(shí)。

部署和測(cè)試 Azure 函數(shù)應(yīng)用程序

如果您已經(jīng)擁有 Azure 函數(shù)應(yīng)用,那就太好了!您可以跳過(guò)創(chuàng)建步驟,直接將代碼部署到現(xiàn)有函數(shù)應(yīng)用。以下是使用 Azure CLI 執(zhí)行此操作的方法:

以下是示例腳本:

# 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

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

成功上傳的示例輸出

成功上傳的示例輸出。

測(cè)試 Azure 函數(shù)應(yīng)用

部署函數(shù)應(yīng)用后,可以通過(guò)向函數(shù)的 URL 發(fā)出 HTTP 請(qǐng)求來(lái)測(cè)試它。URL 通常采用以下格式:https://<Your Function App>.azurewebsites.net/api/<Your Function Name>?code=<your access code>&name=<Enter a name here>

結(jié)論:技巧和最佳實(shí)踐

與傳統(tǒng)的 Web 開(kāi)發(fā)相比,無(wú)服務(wù)器計(jì)算是一種不同的模式。了解其優(yōu)點(diǎn)和局限性將有助于您充分利用它。例如,無(wú)服務(wù)器函數(shù)是無(wú)狀態(tài)的,并且具有最大執(zhí)行時(shí)間,這會(huì)影響您設(shè)計(jì)應(yīng)用程序的方式。以下是一些其他需要考慮的提示:

使用 Azure FunctionsTerraformRapidAPI 構(gòu)建無(wú)服務(wù)器 Web 應(yīng)用是一種強(qiáng)大而有效的應(yīng)用程序開(kāi)發(fā)方式。通過(guò)遵循這些提示和最佳實(shí)踐,您可以確保您的應(yīng)用程序安全、可擴(kuò)展且可維護(hù)。

文章來(lái)源:How to Build a Serverless Web App with Azure Functions and RapidAPI

上一篇:

設(shè)計(jì)優(yōu)先 API 開(kāi)發(fā):神話還是現(xiàn)實(shí)?

下一篇:

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

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)