Convertir texto sin formato en contenido pulido y optimizado para SEO es un desafío diario para muchos desarrolladores .NET que crean aplicaciones web ricas en contenido. GroupDocs.Rewriter Cloud SDK for .NET ofrece una API potente que reescribe oraciones manteniendo el significado. Esta guía paso a paso para integrar con ASP.NET Core MVC le muestra cómo configurar la biblioteca, establecer credenciales, implementar la lógica de reescritura en un controlador y renderizar los resultados en una vista Razor.
Requisitos del caso de uso
Las empresas que generan artículos creados por usuarios, descripciones de productos o copias de marketing a menudo necesitan mejorar la legibilidad sin edición manual. Los requisitos para este escenario incluyen:
- Reescritura de texto en tiempo real directamente desde un formulario web.
- Manejo seguro de credenciales de API en el lado del servidor.
- Integración fluida con el pipeline existente de ASP.NET Core MVC.
Usar código genérico de manipulación de cadenas rápidamente se vuelve propenso a errores y no escala, por lo que una biblioteca dedicada a la reescritura de documentos es esencial.
Elegir GroupDocs.Rewriter Cloud SDK for .NET para el trabajo
GroupDocs.Rewriter Cloud SDK for .NET ofrece una API basada en REST que admite varios idiomas, modos de reescritura personalizables y procesamiento de alto rendimiento. Sus principales capacidades que coinciden con el caso de uso son:
- RewriteModeEnum.Rewrite - produce una reescritura en lenguaje natural del texto de entrada.
- DI‑friendly client - puede registrarse como un singleton en el contenedor de servicios de ASP.NET Core.
- Strong typing and async support - se adapta de forma natural a los patrones asíncronos modernos de .NET.
La guía paso a paso para integrar con ASP.NET Core MVC muestra cómo estas capacidades se corresponden con los requisitos. Para obtener información detallada de la API, consulte la documentación oficial y la referencia de API.
Guía paso a paso para implementar la integración con ASP.NET Core MVC
Esta guía paso a paso para integrar con ASP.NET Core MVC lo guiará a través de cada paso de configuración requerido.
Instalar el paquete SDK
Agrega el paquete NuGet a tu proyecto.
dotnet add package GroupDocs.Rewriter-Cloud
También puedes descargar los binarios desde la página de descarga.
Agregar configuración para credenciales de Rewriter
Coloque su AppSid y AppKey en la configuración. El fragmento a continuación los agrega en memoria 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 el cliente Rewriter API en DI
El cliente SDK se registra como singleton para que pueda inyectarse en los 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);
});
Crear el controlador MVC y el modelo de vista
El controlador recibe el texto original, llama a la API Rewriter y devuelve el 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);
}
}
El modelo de vista adjunto contiene las cadenas de entrada y salida.
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;
}
Construir la vista Razor para entrada y salida de texto
La página Razor presenta un formulario simple y muestra el texto reescrito cuando está disponible.
@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");}
}
Ejemplo completo y funcional de reescritura de documentos en ASP.NET Core MVC
El ejemplo a continuación contiene los archivos fuente completos necesarios para ejecutar la solución.
// ---------------------------------------------------
// 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 ejemplo de código muestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén correctamente instaladas y realice pruebas exhaustivas en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.
Ejecutando la reescritura de documentos mediante la API REST usando cURL
A continuación se muestra un flujo de trabajo rápido con cURL que realiza la misma operación de reescritura a través de los endpoints REST de GroupDocs Rewriter.
Autenticar y obtener el token de acceso
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"}'
La respuesta devuelve un access_token que usarás en llamadas posteriores.
Cargar el texto fuente (opcional para archivos grandes)
curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.txt"
Ejecutar la operación de reescritura
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"
}'
La respuesta JSON contiene el texto reescrito en el campo result.text.
Descargar el resultado (si lo guardaste como un archivo)
curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o rewritten.txt
Para obtener más detalles sobre los parámetros de solicitud y los formatos de respuesta, consulte la documentación oficial de la API.
Conclusiones finales
Integrar el GroupDocs.Rewriter Cloud SDK for .NET en un proyecto ASP.NET Core MVC es sencillo una vez que siga esta guía paso a paso para integrar con ASP.NET Core MVC. La biblioteca se encarga del trabajo pesado de reescritura de lenguaje natural, permitiéndole centrarse en la interfaz de usuario y la lógica de negocio. Recuerde proteger su AppSid y AppKey, usar la licencia temporal para evaluación y actualizar a una licencia completa para cargas de trabajo en producción. Con el código y los ejemplos de cURL a mano, ahora puede añadir reescritura de texto inteligente a cualquier aplicación web .NET.
Preguntas frecuentes
¿Cómo maneja la guía paso a paso para integrar con ASP.NET Core MVC las respuestas de error de la API?
El ejemplo del controlador verifica ModelState.IsValid antes de llamar a la API y captura el RewriteResponse. Si la API devuelve un error, el objeto response será nulo y la vista simplemente mostrará una salida vacía. Para un manejo detallado de errores, consulte la documentación oficial.
¿Puedo reescribir documentos que no sean texto plano, como DOCX o PDF, usando el mismo enfoque?
Sí. La API Rewriter acepta texto sin formato extraído de los formatos compatibles. Primero puedes usar GroupDocs.Parser o GroupDocs.Conversion para extraer el texto, y luego pasarlo al endpoint de reescritura. Ambos SDK están listados en la familia de productos GroupDocs.
¿Es posible ejecutar la operación de reescritura de forma asíncrona en un sitio web de alto tráfico?
Absolutamente. El controlador usa await _rewriterApi.RewriteAsync(...), que es completamente asíncrono y se escala con el pipeline async de ASP.NET Core. Esto encaja con el patrón demostrado en la guía paso a paso para Integrar con ASP.NET Core MVC.
¿Dónde puedo obtener una licencia temporal para pruebas?
Una licencia temporal está disponible en la página de licencia temporal. Le permite evaluar el SDK sin comprometer una compra.
