Перетворення необробленого тексту на відшліфований, 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")
});

Зареєструйте клієнт API Rewriter у 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 та модель представлення

Контролер отримує оригінальний текст, викликає 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 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);

// Додайте конфігурацію для облікових даних GroupDocs Rewriter
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"));

// Зареєструйте клієнт API GroupDocs Rewriter у 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 = "Оригінальний текст")]
    public string InputText { get; set; } = string.Empty;

    [Display(Name = "Перероблений текст")]
    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);
        }

        // Створіть запит для API Rewriter
        var rewriteRequest = new RewriteRequest
        {
            Text = model.InputText,
            Language = "en",               // source language
            TargetLanguage = "en",         // target language (same for rewriting)
            RewriteMode = RewriteModeEnum.Rewrite // choose rewrite mode
        };

        // Викличте API
        RewriteResponse response = await _rewriterApi.RewriteAsync(rewriteRequest);

        // Заповніть модель представлення переробленим текстом
        model.OutputText = response?.Result?.Text ?? string.Empty;

        return View(model);
    }
}

// ---------------------------------------------------
// Views/Rewriter/Index.cshtml
// ---------------------------------------------------
@model RewriterViewModel
@{
    ViewData["Title"] = "Текстовий переробник";
}
<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">Переписати</button>
    </div>
</form>

@if (!string.IsNullOrWhiteSpace(Model.OutputText))
{
    <hr />
    <h4>Перероблений текст</h4>
    <textarea class="form-control" rows="6" readonly>@Model.OutputText</textarea>
}

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
}

Примітка: Цей приклад коду демонструє основну функціональність. Перш ніж використовувати його у вашому проєкті, переконайтеся, що оновили всі шляхи до файлів та значення конфігурації відповідно до вашого реального середовища, перевірте, що всі необхідні залежності правильно встановлені, і ретельно протестуйте у вашому середовищі розробки. Якщо ви зіткнетеся з будь‑якими проблемами, будь ласка, зверніться до офіційної документації або до команди підтримки за допомогою.

Виконання перезапису документа через REST API за допомогою cURL

Нижче наведено швидкий cURL‑workflow, який виконує ту ж саму операцію перезапису через REST‑ендпоінти GroupDocs Rewriter.

Аутентифікація та отримання токену доступу

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, використовуючи той самий підхід?
Так. API Rewriter приймає необроблений текст, отриманий з підтримуваних форматів. Ви можете спочатку використати GroupDocs.Parser або GroupDocs.Conversion для витягнення тексту, а потім передати його в endpoint переписування. Обидва SDK перелічені в сімействі продуктів GroupDocs.

Чи можливо виконувати операцію перезапису асинхронно на веб‑сайті з високим трафіком?
Абсолютно. Контролер використовує await _rewriterApi.RewriteAsync(...), що повністю асинхронний і масштабується разом з асинхронним конвеєром ASP.NET Core. Це відповідає шаблону, продемонстрованому у покроковому посібнику з інтеграції з ASP.NET Core MVC.

Де я можу отримати тимчасову ліцензію для тестування?
Тимчасова ліцензія доступна на temporary license page. Вона дозволяє оцінити SDK без зобов’язання купувати.

Подальше читання