求基于Azure Cognitive Services Translator Text API的Web应用代码示例
Azure Cognitive Services Translator Text API Web应用示例(ASP.NET Core)
当然有!我给你一个基于ASP.NET Core的简单Web应用示例,实现基础的文本翻译功能,你可以基于这个结构扩展成更复杂的应用。
前提准备
- 先在Azure门户创建Translator资源,获取你的
密钥和区域(比如eastus),这是调用API必须的凭证。
1. 配置HttpClient(Program.cs)
我们先在Program.cs里注册一个HttpClient,专门用来调用Translator API:
var builder = WebApplication.CreateBuilder(args); // 添加控制器和视图支持 builder.Services.AddControllersWithViews(); // 注册HttpClient,配置Translator API的基础地址 builder.Services.AddHttpClient("TranslatorClient", client => { client.BaseAddress = new Uri("https://api.cognitive.microsofttranslator.com/"); // 添加API密钥和区域到请求头 client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{YOUR_TRANSLATOR_KEY}"); client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Region", "{YOUR_REGION}"); }); var app = builder.Build(); // 配置中间件 app.UseStaticFiles(); app.UseRouting(); app.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); app.Run();
注意:把
{YOUR_TRANSLATOR_KEY}和{YOUR_REGION}替换成你自己的Azure资源信息。
2. 创建翻译控制器(TranslationController.cs)
在Controllers文件夹下新建控制器,处理翻译请求:
using Microsoft.AspNetCore.Mvc; using System.Text; using System.Text.Json; namespace TranslatorWebApp.Controllers; public class TranslationController : Controller { private readonly IHttpClientFactory _httpClientFactory; public TranslationController(IHttpClientFactory httpClientFactory) { _httpClientFactory = httpClientFactory; } // 显示翻译页面 public IActionResult Index() { return View(); } // 处理翻译请求 [HttpPost] public async Task<IActionResult> Translate(string inputText, string targetLanguage) { if (string.IsNullOrEmpty(inputText)) { ViewBag.Error = "请输入要翻译的文本"; return View("Index"); } var client = _httpClientFactory.CreateClient("TranslatorClient"); // 构造请求体:Translator API接受JSON数组格式的输入 var requestBody = new[] { new { Text = inputText } }; var jsonContent = new StringContent(JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json"); // 发送POST请求到翻译API,指定目标语言 var response = await client.PostAsync($"/translate?api-version=3.0&to={targetLanguage}", jsonContent); if (!response.IsSuccessStatusCode) { ViewBag.Error = $"API调用失败:{response.StatusCode}"; return View("Index"); } // 解析响应结果 var responseContent = await response.Content.ReadAsStringAsync(); var translationResult = JsonSerializer.Deserialize<List<TranslationResponse>>(responseContent); ViewBag.OriginalText = inputText; ViewBag.TranslatedText = translationResult?.First()?.Translations?.First()?.Text; ViewBag.TargetLanguage = targetLanguage; return View("Index"); } // 用于解析API响应的模型类 private class TranslationResponse { public List<TranslationItem> Translations { get; set; } } private class TranslationItem { public string Text { get; set; } public string To { get; set; } } }
3. 创建前端视图(Index.cshtml)
在Views/Translation文件夹下创建视图,提供用户交互界面:
@{ ViewData["Title"] = "文本翻译工具"; } <h1>Azure Translator 文本翻译</h1> @if (!string.IsNullOrEmpty(ViewBag.Error)) { <div class="alert alert-danger">@ViewBag.Error</div> } @using (Html.BeginForm("Translate", "Translation", FormMethod.Post)) { <div class="mb-3"> <label for="inputText" class="form-label">要翻译的文本</label> <textarea class="form-control" id="inputText" name="inputText" rows="3">@ViewBag.OriginalText</textarea> </div> <div class="mb-3"> <label for="targetLanguage" class="form-label">目标语言</label> <select class="form-select" id="targetLanguage" name="targetLanguage"> <option value="zh-Hans" selected>简体中文</option> <option value="en">英语</option> <option value="ja">日语</option> <option value="fr">法语</option> <!-- 可以添加更多语言代码,参考Azure文档 --> </select> </div> <button type="submit" class="btn btn-primary">翻译</button> } @if (!string.IsNullOrEmpty(ViewBag.TranslatedText)) { <div class="mt-4"> <h3>翻译结果</h3> <p><strong>@ViewBag.TargetLanguage:</strong>@ViewBag.TranslatedText</p> </div> }
运行说明
- 把代码里的密钥和区域替换成你自己的Azure资源信息
- 启动应用,访问
/Translation/Index就能看到翻译界面 - 输入文本,选择目标语言,点击翻译就能看到结果
这个示例用了ASP.NET Core MVC的架构,你可以根据自己的需求改成Razor Pages或者其他Web框架的版本,核心逻辑都是通过HttpClient调用Translator API,处理请求和响应。
内容的提问来源于stack exchange,提问作者David Williams
相关产品推荐
相关产品推荐

