
14個(gè)文本轉(zhuǎn)圖像AI API
該應(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 init
在您的終端中運(yùn)行。這將下載必要的提供程序插件。terraform plan
以檢查將進(jìn)行哪些更改。然后,運(yùn)行terraform apply
以創(chuàng)建定義的基礎(chǔ)設(shè)施。請(qǐng)記住用實(shí)際值替換占位符,并根據(jù)您的要求調(diào)整代碼。
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)建的資源。
azurerm_resource_group
用于定義資源組。azurerm_storage_account
用于定義存儲(chǔ)帳戶。azurerm_app_service_plan
用于定義應(yīng)用服務(wù)計(jì)劃。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
。
輸出應(yīng)如下所示。
現(xiàn)在我們有了工具,讓我們開(kāi)始構(gòu)建無(wú)服務(wù)器 Web 應(yīng)用程序。
如果您使用 RapidAPI,則需要執(zhí)行以下手動(dòng)流程。找到要在 RapidAPI 上使用的 API 后,您通常會(huì)使用注冊(cè) RapidAPI 時(shí)獲得的API 密鑰來(lái)驗(yàn)證您對(duì) API 的請(qǐng)求。
下面是一個(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)用和 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
}
以下是代碼中的組件:
這是一個(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í)。
如果您已經(jīng)擁有 Azure 函數(shù)應(yīng)用,那就太好了!您可以跳過(guò)創(chuàng)建步驟,直接將代碼部署到現(xiàn)有函數(shù)應(yīng)用。以下是使用 Azure CLI 執(zhí)行此操作的方法:
az login
從 CLI 登錄到您的 Azure 帳戶。func azure functionapp publish <FunctionAppName>
命令將本地項(xiàng)目部署到現(xiàn)有函數(shù)應(yīng)用程序。 替換為現(xiàn)有函數(shù)應(yīng)用程序的名稱。以下是示例腳本:
# 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”。
成功上傳的示例輸出。
部署函數(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>
。
與傳統(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 Functions、Terraform 和 RapidAPI 構(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
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)