将原始文本转换为精炼、符合 SEO 的内容是许多构建内容丰富的 Web 应用程序的 .NET 开发人员每天面临的挑战。GroupDocs.Rewriter Cloud SDK for .NET 提供了强大的 API,能够在保持原意的同时改写句子。本《逐步指南》展示了如何在 ASP.NET Core MVC 中集成该 SDK,包括设置库、配置凭据、在控制器中实现改写逻辑以及在 Razor 视图中渲染结果。
用例需求
企业在生成用户生成的文章、产品描述或营销文案时,通常需要在无需人工编辑的情况下提升可读性。此类场景的需求包括:
- 实时文本重写,直接来自网页表单。
- 在服务器端安全处理 API 凭据。
- 与现有的 ASP.NET Core MVC 管道无缝集成。
使用通用的字符串‑操作代码很快就会变得容易出错且难以扩展,这就是为什么需要专用的文档重写库。
为工作选择 GroupDocs.Rewriter Cloud SDK for .NET
GroupDocs.Rewriter Cloud SDK for .NET 提供基于 REST‑based API,支持多种语言、可自定义的改写模式以及高性能处理。其符合使用场景的关键功能包括:
- RewriteModeEnum.Rewrite - 生成对输入文本的自然语言改写。
- DI‑friendly client - 可以在 ASP.NET Core 服务容器中注册为单例。
- Strong typing and async support - 自然地融入现代 .NET 异步模式。
逐步指南将 ASP.NET Core MVC 集成演示了这些功能如何映射到需求。有关详细的 API 信息,请参阅官方文档和API 参考。
实现逐步指南以集成 ASP.NET Core MVC
本分步指南将帮助您集成 ASP.NET Core MVC,并逐步引导完成所有必需的配置步骤。
安装 SDK 包
将 NuGet 包添加到您的项目中。
dotnet add package GroupDocs.Rewriter-Cloud
您也可以从下载页面下载二进制文件。
添加重写器凭据的配置
将您的 AppSid 和 AppKey 放入配置中。下面的代码片段为了简化起见,将它们添加到内存中。
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
在 DI 中注册 Rewriter API 客户端
SDK 客户端被注册为单例,以便可以注入到控制器中。
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
创建 MVC 控制器和视图模型
控制器接收原始文本,调用 Rewriter API,并返回重写后的结果。
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en",
TargetLanguage = "en",
RewriteMode = RewriteModeEnum.Rewrite
};
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
随附的视图模型保存输入和输出字符串。
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
构建用于文本输入和输出的 Razor 视图
Razor 页面呈现一个简单的表单,并在可用时显示重写后的文本。
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
ASP.NET Core MVC 中的文档重写完整工作示例
下面的示例包含运行该解决方案所需的完整源文件。
// ---------------------------------------------------
// Program.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Builder;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using GroupDocs.Rewriter.Cloud.Sdk.Api;
using GroupDocs.Rewriter.Cloud.Sdk.Client;
using GroupDocs.Rewriter.Cloud.Sdk.Model.Requests;
using GroupDocs.Rewriter.Cloud.Sdk.Model;
using System.Threading.Tasks;
var builder = WebApplication.CreateBuilder(args);
// Add configuration for GroupDocs Rewriter credentials
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
builder.Services.Configure<RewriterSettings>(builder.Configuration.GetSection("GroupDocsRewriter"));
// Register GroupDocs Rewriter API client in DI
builder.Services.AddSingleton<IRewriterApi>(sp =>
{
var settings = sp.GetRequiredService<IOptions<RewriterSettings>>().Value;
var config = new Configuration
{
AppSid = settings.AppSid,
AppKey = settings.AppKey
};
return new RewriterApi(config);
});
builder.Services.AddControllersWithViews();
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Rewriter}/{action=Index}/{id?}");
app.Run();
// ---------------------------------------------------
// RewriterSettings.cs
// ---------------------------------------------------
public class RewriterSettings
{
public string AppSid { get; set; } = string.Empty;
public string AppKey { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Models/RewriterViewModel.cs
// ---------------------------------------------------
using System.ComponentModel.DataAnnotations;
public class RewriterViewModel
{
[Required]
[Display(Name = "Original Text")]
public string InputText { get; set; } = string.Empty;
[Display(Name = "Rewritten Text")]
public string OutputText { get; set; } = string.Empty;
}
// ---------------------------------------------------
// Controllers/RewriterController.cs
// ---------------------------------------------------
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
public class RewriterController : Controller
{
private readonly IRewriterApi _rewriterApi;
public RewriterController(IRewriterApi rewriterApi)
{
_rewriterApi = rewriterApi;
}
[HttpGet]
public IActionResult Index()
{
return View(new RewriterViewModel());
}
[HttpPost]
public async Task<IActionResult> Index(RewriterViewModel model)
{
if (!ModelState.IsValid)
{
return View(model);
}
// Build request for the Rewriter API
var rewriteRequest = new RewriteRequest
{
Text = model.InputText,
Language = "en", // source language
TargetLanguage = "en", // target language (same for rewriting)
RewriteMode = RewriteModeEnum.Rewrite // choose rewrite mode
};
// Call the API
RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);
// Populate the view model with the rewritten text
model.OutputText = response?.Result?.Text ?? string.Empty;
return View(model);
}
}
// ---------------------------------------------------
// Views/Rewriter/Index.cshtml
// ---------------------------------------------------
@model RewriterViewModel
@{
ViewData["Title"] = "Text Rewriter";
}
<h2>@ViewData["Title"]</h2>
<form asp-action="Index" method="post" class="form-horizontal">
<div class="form-group">
<label asp-for="InputText" class="control-label"></label>
<textarea asp-for="InputText" class="form-control" rows="6"></textarea>
<span asp-validation-for="InputText" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary">Rewrite</button>
</div>
</form>
@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
<hr />
<h4>Rewritten Text</h4>
<textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}
@section Scripts {
@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}
注意: 这段代码示例演示了核心功能。在将其用于项目之前,请确保更新所有文件路径和配置值以匹配实际环境,验证已正确安装所有必需的依赖项,并在开发环境中彻底测试。如果遇到任何问题,请参考官方文档或联系支持团队获取帮助。
使用 cURL 通过 REST API 执行文档重写
下面是一个快速的 cURL 工作流,它通过 GroupDocs Rewriter REST 端点执行相同的重写操作。
认证并获取访问令牌
curl -X POST "https://api.groupdocs.cloud/v1/auth/token" \
-H "Content-Type: application/json" \
-d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
响应返回一个 access_token,您将在后续调用中使用它。
上传源文本(大文件可选)
curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.txt"
执行重写操作
curl -X POST "https://api.groupdocs.cloud/v1/rewriter/rewrite" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Your original text goes here.",
"language": "en",
"targetLanguage": "en",
"rewriteMode": "Rewrite"
}'
JSON 响应在 result.text 字段中包含重写的文本。
下载结果(如果您将其存储为文件)
curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o rewritten.txt
有关请求参数和响应格式的更多详细信息,请参阅官方 API 文档。
最后思考
将 GroupDocs.Rewriter Cloud SDK for .NET 集成到 ASP.NET Core MVC 项目中非常简单,只需按照本分步指南将其集成到 ASP.NET Core MVC。该库负责自然语言重写的繁重工作,让您专注于 UI 和业务逻辑。请记得保护您的 AppSid 和 AppKey,使用临时许可证进行评估,并在生产环境中升级为正式许可证。拥有代码和 cURL 示例后,您现在可以在任何 .NET Web 应用程序中添加智能文本重写功能。
常见问题
逐步指南在 ASP.NET Core MVC 中集成时如何处理 API 的错误响应?
控制器示例在调用 API 之前检查 ModelState.IsValid 并捕获 RewriteResponse。如果 API 返回错误,response 对象将为 null,视图将仅显示空输出。有关详细的错误处理,请参阅官方文档。
我可以使用相同的方法重写除纯文本之外的文档,例如 DOCX 或 PDF 吗?
是的。Rewriter API 接受从支持的格式中提取的原始文本。您可以先使用 GroupDocs.Parser 或 GroupDocs.Conversion 提取文本,然后将其传递给 rewrite 端点。两个 SDK 都列在 GroupDocs 产品系列中。
在高流量网站中是否可以异步运行 rewrite 操作?
完全可以。控制器使用 await _rewriterApi.RewriteAsync(...),它是完全异步的,并且能够随 ASP.NET Core 的异步管道进行扩展。此方式符合在 step-by-step 指南中演示的与 ASP.NET Core MVC 集成的模式。
在哪里可以获取用于测试的临时许可证?
临时许可证可在临时许可证页面获取。它允许您在不购买的情况下评估 SDK。
