Converter texto bruto em conteúdo polido e otimizado para SEO é um desafio diário para muitos desenvolvedores .NET que criam aplicações web ricas em conteúdo. GroupDocs.Rewriter Cloud SDK for .NET fornece uma API poderosa que reescreve frases preservando o significado. Este guia passo a passo para integrar com ASP.NET Core MVC mostra como configurar a biblioteca, definir credenciais, implementar a lógica de reescrita em um controlador e renderizar os resultados em uma visualização Razor.

Requisitos do Caso de Uso

Empresas que geram artigos criados por usuários, descrições de produtos ou textos de marketing frequentemente precisam melhorar a legibilidade sem edição manual. Os requisitos para esse cenário incluem:

  • Reescrita de texto em tempo real diretamente de um formulário web.
  • Manipulação segura das credenciais da API no lado do servidor.
  • Integração perfeita com o pipeline existente do ASP.NET Core MVC.

Usar código genérico de manipulação de strings rapidamente se torna propenso a erros e não escala, por isso uma biblioteca dedicada à reescrita de documentos é essencial.

Escolhendo GroupDocs.Rewriter Cloud SDK for .NET para o Trabalho

GroupDocs.Rewriter Cloud SDK for .NET oferece uma API baseada em REST que suporta vários idiomas, modos de reescrita personalizáveis e processamento de alto desempenho. Seus principais recursos que correspondem ao caso de uso são:

  • RewriteModeEnum.Rewrite - produz uma reescrita em linguagem natural do texto de entrada.
  • Cliente compatível com DI - pode ser registrado como singleton no contêiner de serviços ASP.NET Core.
  • Tipagem forte e suporte assíncrono - encaixa-se naturalmente nos padrões assíncronos modernos do .NET.

O guia passo a passo para integrar com ASP.NET Core MVC demonstra como esses recursos se mapeiam aos requisitos. Para informações detalhadas da API, veja a documentação oficial e a referência da API.

Implementando Guia Passo a Passo para Integrar com ASP.NET Core MVC

Este guia passo a passo para integrar com ASP.NET Core MVC o guiará por cada etapa de configuração necessária.

Instalar o Pacote SDK

Adicione o pacote NuGet ao seu projeto.

dotnet add package GroupDocs.Rewriter-Cloud

Você também pode baixar os binários na página de download.

Adicionar Configuração para Credenciais do Rewriter

Coloque seu AppSid e AppKey na configuração. O trecho abaixo os adiciona em memória para simplificar.

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

Registrar o cliente da API Rewriter no DI

O cliente SDK é registrado como singleton para que possa ser injetado nos controladores.

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

Criar o Controller MVC e o View Model

O controlador recebe o texto original, chama a Rewriter API e retorna o resultado reescrito.

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

O modelo de visualização associado contém as strings de entrada e saída.

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

Construa a View Razor para Entrada e Saída de Texto

A página Razor apresenta um formulário simples e exibe o texto reescrito quando disponível.

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

Exemplo completo e funcional de reescrita de documentos em ASP.NET Core MVC

O exemplo abaixo contém os arquivos de origem completos necessários para executar a solução.

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

Nota: Este exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivo e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão devidamente instaladas e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.

Executando Reescrita de Documentos via API REST usando cURL

Abaixo está um fluxo rápido de cURL que executa a mesma operação de reescrita via os endpoints REST do GroupDocs Rewriter.

Autenticar e Obter Token de Acesso

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

A resposta retorna um access_token que você usará nas chamadas subsequentes.

Carregar o Texto Fonte (opcional para arquivos grandes)

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

Executar a Operação de Reescrita

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

A resposta JSON contém o texto reescrito no campo result.text.

Baixe o Resultado (se você o armazenou como um arquivo)

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

Para mais detalhes sobre os parâmetros de solicitação e os formatos de resposta, veja a documentação oficial da API.

Considerações Finais

Integrando o GroupDocs.Rewriter Cloud SDK for .NET em um projeto ASP.NET Core MVC é simples, desde que você siga este guia passo a passo para integrar com ASP.NET Core MVC. A biblioteca cuida do trabalho pesado de reescrita de linguagem natural, permitindo que você se concentre na interface do usuário e na lógica de negócios. Lembre‑se de proteger seu AppSid e AppKey, usar a licença temporária para avaliação e atualizar para uma licença completa para cargas de trabalho de produção. Com o código e os exemplos cURL em mãos, você agora pode adicionar reescrita inteligente de texto a qualquer aplicação web .NET.

Perguntas Frequentes

Como o guia passo a passo para integrar com ASP.NET Core MVC lida com respostas de erro da API?
O exemplo de controlador verifica ModelState.IsValid antes de chamar a API e captura o RewriteResponse. Se a API retornar um erro, o objeto response será nulo, e a visualização simplesmente exibirá uma saída vazia. Para tratamento detalhado de erros, consulte a documentação oficial.

Posso reescrever documentos além de texto simples, como DOCX ou PDF, usando a mesma abordagem?
Sim. A Rewriter API aceita texto bruto extraído de formatos suportados. Você pode primeiro usar GroupDocs.Parser ou GroupDocs.Conversion para extrair o texto, então passá‑lo para o endpoint de reescrita. Ambos os SDKs estão listados na família de produtos GroupDocs.

É possível executar a operação de reescrita de forma assíncrona em um site de alto tráfego?
Com certeza. O controlador usa await _rewriterApi.RewriteAsync(...), que é totalmente assíncrono e escala com o pipeline assíncrono do ASP.NET Core. Isso se encaixa no padrão demonstrado no guia passo a passo para Integrar com ASP.NET Core MVC.

Onde posso obter uma licença temporária para teste?
Uma licença temporária está disponível na página de licença temporária. Ela permite que você avalie o SDK sem se comprometer com uma compra.

Leitura adicional