Преобразование необработанного текста в отшлифованный, SEO‑дружественный контент — ежедневный вызов для многих .NET‑разработчиков, создающих веб‑приложения с богатым контентом. GroupDocs.Rewriter Cloud SDK for .NET предоставляет мощный API, который переписывает предложения, сохраняя их смысл. Это пошаговое руководство по интеграции с ASP.NET Core MVC показывает, как настроить библиотеку, сконфигурировать учетные данные, реализовать логику переписывания в контроллере и отобразить результаты в Razor view.
Требования к использованию
Предприятия, которые создают пользовательские статьи, описания продуктов или маркетинговый копирайт, часто нуждаются в повышении читаемости без ручного редактирования. Требования к такому сценарию включают:
- Переписывание текста в реальном времени непосредственно из веб‑формы.
- Надёжная обработка учётных данных API на стороне сервера.
- Бесшовная интеграция с существующим конвейером ASP.NET Core MVC.
Использование общего кода для манипуляций со строками быстро приводит к ошибкам и не масштабируется, поэтому необходима специализированная библиотека для переписывания документов.
Выбор GroupDocs.Rewriter Cloud SDK for .NET для задачи
GroupDocs.Rewriter Cloud SDK for .NET предлагает REST‑ориентированный API, поддерживающий множество языков, настраиваемые режимы перезаписи и высокопроизводительную обработку. Его ключевые возможности, соответствующие случаю использования, включают:
- RewriteModeEnum.Rewrite - создает переписанный вариант входного текста на естественном языке.
- DI‑friendly client - может быть зарегистрирован как singleton в контейнере служб 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
Вы также можете скачать бинарные файлы со страницы загрузки.
Добавить конфигурацию для учетных данных Rewriter
Поместите ваш AppSid и AppKey в конфигурацию. Приведённый ниже фрагмент добавляет их в память для простоты.
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
Регистрация клиента Rewriter API в DI
Клиент SDK регистрируется как singleton, чтобы его можно было внедрять в контроллеры.
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 и модель представления
Контроллер получает исходный текст, вызывает API Rewriter и возвращает переписанный результат.
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 View для ввода и вывода текста
Страница 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");}
}
Примечание: Этот пример кода демонстрирует основную функциональность. Прежде чем использовать его в вашем проекте, убедитесь, что обновили все пути к файлам и значения конфигурации в соответствии с вашей реальной средой, проверьте, что все необходимые зависимости правильно установлены, и тщательно протестируйте в вашей среде разработки. Если вы столкнётесь с какими‑либо проблемами, обратитесь к официальной документации или свяжитесь с командой поддержки для получения помощи.
Выполнение переписывания документа через REST API с использованием cURL
Ниже приведён быстрый cURL workflow, который выполняет ту же операцию перезаписи через GroupDocs Rewriter REST endpoints.
Аутентификация и получение токена доступа
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. Библиотека берет на себя тяжелую работу по переписыванию естественного языка, позволяя вам сосредоточиться на пользовательском интерфейсе и бизнес‑логике. Не забудьте защитить ваш AppSid и AppKey, использовать временную лицензию для оценки и перейти на полную лицензию для производственных нагрузок. Имея под рукой код и примеры cURL, вы теперь можете добавить интеллектуальное переписывание текста в любое веб‑приложение .NET.
Часто задаваемые вопросы
Как пошаговое руководство по интеграции с ASP.NET Core MVC обрабатывает ответы об ошибках от API?
Пример контроллера проверяет ModelState.IsValid перед вызовом API и захватывает RewriteResponse. Если API возвращает ошибку, объект response будет равен null, и представление просто покажет пустой вывод. Для подробной обработки ошибок обратитесь к официальной документации.
Могу ли я переписывать документы, отличные от простого текста, такие как DOCX или PDF, используя тот же подход?
Да. Rewriter API принимает необработанный текст, извлечённый из поддерживаемых форматов. Вы можете сначала использовать GroupDocs.Parser или GroupDocs.Conversion для извлечения текста, а затем передать его в endpoint переписывания. Оба SDK перечислены в семействе продуктов GroupDocs.
Можно ли выполнить операцию перезаписи асинхронно на веб‑сайте с высокой нагрузкой?
Конечно. Контроллер использует await _rewriterApi.RewriteAsync(...), что полностью асинхронно и масштабируется вместе с асинхронным конвейером ASP.NET Core. Это соответствует шаблону, продемонстрированному в пошаговом руководстве по интеграции с ASP.NET Core MVC.
Где я могу получить временную лицензию для тестирования?
Временная лицензия доступна на странице страница временной лицензии. Она позволяет вам оценить SDK, не совершая покупку.
