Konwertowanie surowego tekstu w dopracowaną, przyjazną SEO treść jest codziennym wyzwaniem dla wielu programistów .NET tworzących aplikacje internetowe bogate w treść. GroupDocs.Rewriter Cloud SDK for .NET zapewnia potężne API, które przepisuje zdania, zachowując ich znaczenie. Ten przewodnik krok po kroku integracji z ASP.NET Core MVC pokazuje, jak skonfigurować bibliotekę, ustawić poświadczenia, zaimplementować logikę przepisywania w kontrolerze oraz wyświetlić wyniki w widoku Razor.

Wymagania dotyczące przypadku użycia

Firmy, które generują artykuły tworzone przez użytkowników, opisy produktów lub materiały marketingowe, często muszą poprawić ich czytelność bez ręcznej edycji. Wymagania dla takiego scenariusza obejmują:

  • Przepisywanie tekstu w czasie rzeczywistym bezpośrednio z formularza internetowego.
  • Bezpieczne obsługiwanie danych uwierzytelniających API po stronie serwera.
  • Bezproblemowa integracja z istniejącym potokiem ASP.NET Core MVC.

Używanie ogólnego kodu manipulującego łańcuchami znaków szybko staje się podatne na błędy i nie skaluje się, dlatego dedykowana biblioteka do przepisania dokumentów jest niezbędna.

Wybór GroupDocs.Rewriter Cloud SDK for .NET do zadania

GroupDocs.Rewriter Cloud SDK for .NET udostępnia interfejs API oparty na REST, który obsługuje wiele języków, konfigurowalne tryby przepisywania oraz wysokowydajne przetwarzanie. Jego kluczowe możliwości, które odpowiadają przypadkowi użycia, to:

  • RewriteModeEnum.Rewrite - generuje naturalną parafrazę tekstu wejściowego.
  • DI‑friendly client - może być zarejestrowany jako singleton w kontenerze usług ASP.NET Core.
  • Strong typing and async support - naturalnie wpasowuje się w nowoczesne asynchroniczne wzorce .NET.

Przewodnik krok po kroku integracji z ASP.NET Core MVC pokazuje, jak te możliwości odpowiadają wymaganiom. Aby uzyskać szczegółowe informacje o API, zobacz oficjalną dokumentację oraz referencję API.

Implementacja przewodnika krok po kroku integracji z ASP.NET Core MVC

Ten przewodnik krok po kroku integracji z ASP.NET Core MVC poprowadzi Cię przez każdy wymagany krok konfiguracji.

Zainstaluj pakiet SDK

Dodaj pakiet NuGet do swojego projektu.

dotnet add package GroupDocs.Rewriter-Cloud

Możesz również pobrać pliki binarne ze strony pobierania.

Dodaj konfigurację dla poświadczeń Rewriter

Umieść swój AppSid i AppKey w konfiguracji. Poniższy fragment dodaje je w pamięci dla uproszczenia.

builder.Configuration.AddInMemoryCollection(new[]
{
    new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
    new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});

Zarejestruj klienta API Rewriter w DI

Klient SDK jest rejestrowany jako singleton, aby mógł być wstrzykiwany do kontrolerów.

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);
});

Utwórz kontroler MVC i model widoku

Kontroler otrzymuje oryginalny tekst, wywołuje Rewriter API i zwraca przepisany wynik.

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);
    }
}

Dołączony model widoku przechowuje ciągi wejściowe i wyjściowe.

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;
}

Zbuduj widok Razor dla wprowadzania i wyjścia tekstu

Strona Razor prezentuje prosty formularz i wyświetla przepisany tekst, gdy jest dostępny.

@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");}
}

Pełny działający przykład przepisania dokumentu w ASP.NET Core MVC

Poniższy przykład zawiera pełne pliki źródłowe potrzebne do uruchomienia rozwiązania.

// ---------------------------------------------------
// 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");}
}

Uwaga: Ten przykład kodu demonstruje podstawową funkcjonalność. Przed użyciem go w swoim projekcie upewnij się, że zaktualizowałeś wszystkie ścieżki plików i wartości konfiguracyjne, aby odpowiadały rzeczywistemu środowisku, sprawdź, czy wszystkie wymagane zależności są prawidłowo zainstalowane, i dokładnie przetestuj w środowisku deweloperskim. Jeśli napotkasz jakiekolwiek problemy, odwołaj się do oficjalnej dokumentacji lub skontaktuj się z zespołem wsparcia po pomoc.

Wykonywanie przepisania dokumentu za pomocą REST API przy użyciu cURL

Poniżej znajduje się szybki przepływ pracy cURL, który wykonuje tę samą operację przepisywania za pośrednictwem punktów końcowych GroupDocs Rewriter REST.

Uwierzytelnij i uzyskaj token dostępu

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"}'

Odpowiedź zwraca access_token, którego będziesz używać w kolejnych wywołaniach.

Prześlij tekst źródłowy (opcjonalnie dla dużych plików)

curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -F "file=@input.txt"

Wykonaj operację przepisywania

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"
         }'

Odpowiedź JSON zawiera przepisany tekst w polu result.text.

Pobierz wynik (jeśli zapisałeś go jako plik)

curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
     -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
     -o rewritten.txt

Aby uzyskać więcej informacji na temat parametrów żądania i formatów odpowiedzi, zobacz oficjalną dokumentację API.

Końcowe przemyślenia

Integracja GroupDocs.Rewriter Cloud SDK for .NET w projekcie ASP.NET Core MVC jest prosta, gdy zastosujesz się do tego przewodnika krok po kroku dotyczącego integracji z ASP.NET Core MVC. Biblioteka zajmuje się ciężkim zadaniem przetwarzania języka naturalnego, pozwalając Ci skupić się na interfejsie użytkownika i logice biznesowej. Pamiętaj, aby zabezpieczyć swoje AppSid i AppKey, używać tymczasowej licencji do oceny oraz przejść na pełną licencję w środowiskach produkcyjnych. Mając pod ręką kod i przykłady cURL, możesz teraz dodać inteligentne przekształcanie tekstu do dowolnej aplikacji internetowej .NET.

FAQs

Jak przewodnik krok po kroku dotyczący integracji z ASP.NET Core MVC obsługuje odpowiedzi błędów z API?
Przykład kontrolera sprawdza ModelState.IsValid przed wywołaniem API i przechwytuje RewriteResponse. Jeśli API zwróci błąd, obiekt response będzie równy null, a widok po prostu wyświetli pusty wynik. Aby uzyskać szczegółowe informacje o obsłudze błędów, zapoznaj się z oficjalną dokumentację.

Czy mogę przepisywać dokumenty inne niż zwykły tekst, takie jak DOCX lub PDF, używając tego samego podejścia?
Tak. Rewriter API akceptuje surowy tekst wyodrębniony z obsługiwanych formatów. Najpierw możesz użyć GroupDocs.Parser lub GroupDocs.Conversion do wyodrębnienia tekstu, a następnie przekazać go do endpointu przepisywania. Oba SDK są wymienione w rodzinie produktów GroupDocs.

Czy możliwe jest uruchomienie operacji przepisywania asynchronicznie w witrynie o dużym natężeniu ruchu?
Zdecydowanie tak. Kontroler używa await _rewriterApi.RewriteAsync(...), co jest w pełni asynchroniczne i skalowalne w ramach asynchronicznego potoku ASP.NET Core. Pasuje to do wzorca przedstawionego w przewodniku krok po kroku dotyczącym integracji z ASP.NET Core MVC.

Gdzie mogę uzyskać tymczasową licencję do testów?
Tymczasowa licencja jest dostępna na stronie tymczasowej licencji. Umożliwia ona ocenę SDK bez zobowiązania się do zakupu.

Dalsza lektura