
14个文本转图像AI API
无服务器计算是云开发中的一种流行趋势,它允许开发人员创建可扩展、经济高效且事件驱动的应用程序,而无需管理服务器。本文将指导您使用 Azure Functions 和 RapidAPI 构建无服务器 Web 应用。
无服务器计算是一种云计算模型,其中云提供商动态管理服务器的分配和配置。无服务器应用程序在无状态计算容器中运行,这些容器由事件触发、短暂存在且完全由云提供商管理。
RapidAPI 是一个将开发人员与数千个不同类别的 API 相连接的平台。以下是注册和获取 API 密钥的方法。
找到您的 API 密钥以使用 RapidAPI。
请注意,API 密钥属于敏感信息,应妥善保管。请勿公开分享您的 API 密钥。当您使用来自 RapidAPI 的 API 时,您将使用此 API 密钥来验证您的请求。
Terraform 是 HashiCorp 开发的一款开源基础设施即代码 (IaC) 工具。它允许您使用声明式配置语言定义和提供数据中心基础设施。这意味着您描述所需的基础设施状态,Terraform 将找出如何实现该状态。
Terraform 的主要功能包括:
请记住,HaschiCorp 已将 Terraform 许可证切换为源代码可用的商业源代码许可证 (BSL)。开源分支OpenTofu是一种具有类似功能的可行替代方案。
下图说明了使用 Azure Functions 和 RapidAPI的无服务器 Web 应用的数据流。
该应用程序由三个主要组件组成:
该图显示了用户与 Web 应用交互时数据在这些组件之间的流动方式。该应用利用了无服务器计算的优势,例如可扩展性、可靠性和成本效益。
以下是使用 Terraform 设置开发环境的基本流程概述:
terraform init
在您的终端中运行。这将下载必要的提供程序插件。terraform plan
以检查将进行哪些更改。然后,运行terraform apply
以创建定义的基础设施。请记住用实际值替换占位符,并根据您的要求调整代码。
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 代码及其创建的资源。
azurerm_resource_group
用于定义资源组。azurerm_storage_account
用于定义存储帐户。azurerm_app_service_plan
用于定义应用服务计划。azurerm_function_app
用于定义函数应用程序。在提供的代码中,您可以将占位符替换为实际值,以便在 Azure 环境中创建这些资源。例如,您可以将“example-resources”替换为资源组的名称,将“West Europe”替换为要使用的 Azure 区域,将“examplestorageacc”替换为存储帐户的名称,等等。
要创建基础设施,我们只需执行:terraform apply
。
输出应如下所示。
现在我们有了工具,让我们开始构建无服务器 Web 应用程序。
如果您使用 RapidAPI,则需要执行以下手动流程。找到要在 RapidAPI 上使用的 API 后,您通常会使用注册 RapidAPI 时获得的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 函数应用和 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
}
以下是代码中的组件:
这是一个 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 CLI 执行此操作的方法:
az login
从 CLI 登录到您的 Azure 帐户。func azure functionapp publish <FunctionAppName>
命令将本地项目部署到现有函数应用程序。 替换为现有函数应用程序的名称。以下是示例脚本:
# 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”。
成功上传的示例输出。
部署函数应用后,可以通过向函数的 URL 发出 HTTP 请求来测试它。URL 通常采用以下格式:https://<Your Function App>.azurewebsites.net/api/<Your Function Name>?code=<your access code>&name=<Enter a name here>
。
与传统的 Web 开发相比,无服务器计算是一种不同的模式。了解其优点和局限性将有助于您充分利用它。例如,无服务器函数是无状态的,并且具有最大执行时间,这会影响您设计应用程序的方式。以下是一些其他需要考虑的提示:
使用 Azure Functions、Terraform 和 RapidAPI 构建无服务器 Web 应用是一种强大而有效的应用程序开发方式。通过遵循这些提示和最佳实践,您可以确保您的应用程序安全、可扩展且可维护。
文章来源:How to Build a Serverless Web App with Azure Functions and RapidAPI