Việc chuyển đổi văn bản thô thành nội dung đã được chỉnh sửa, thân thiện với SEO là một thách thức hàng ngày đối với nhiều nhà phát triển .NET xây dựng các ứng dụng web giàu nội dung. GroupDocs.Rewriter Cloud SDK for .NET cung cấp một API mạnh mẽ giúp viết lại các câu mà vẫn giữ nguyên ý nghĩa. Hướng dẫn từng bước này để tích hợp với ASP.NET Core MVC cho bạn biết cách thiết lập thư viện, cấu hình thông tin xác thực, triển khai logic viết lại trong một controller, và hiển thị kết quả trong một Razor view.
Yêu cầu trường hợp sử dụng
Doanh nghiệp tạo ra các bài viết do người dùng tạo, mô tả sản phẩm hoặc bản sao tiếp thị thường cần cải thiện khả năng đọc mà không cần chỉnh sửa thủ công. Các yêu cầu cho kịch bản như vậy bao gồm:
- Viết lại văn bản theo thời gian thực trực tiếp từ biểu mẫu web.
- Xử lý an toàn các thông tin xác thực API phía máy chủ.
- Tích hợp liền mạch với pipeline ASP.NET Core MVC hiện có.
Việc sử dụng mã thao tác chuỗi chung nhanh chóng trở nên dễ gây lỗi và không mở rộng được, vì vậy một thư viện chuyên dụng để viết lại tài liệu là cần thiết.
Lựa chọn GroupDocs.Rewriter Cloud SDK for .NET cho công việc
GroupDocs.Rewriter Cloud SDK for .NET cung cấp một API dựa trên REST hỗ trợ nhiều ngôn ngữ, các chế độ viết lại có thể tùy chỉnh và xử lý hiệu suất cao. Các khả năng chính của nó phù hợp với trường hợp sử dụng là:
- RewriteModeEnum.Rewrite - tạo ra một bản viết lại ngôn ngữ tự nhiên của văn bản đầu vào.
- DI‑friendly client - có thể được đăng ký dưới dạng singleton trong container dịch vụ ASP.NET Core.
- Strong typing and async support - phù hợp một cách tự nhiên với các mẫu bất đồng bộ hiện đại của .NET.
Hướng dẫn từng bước để tích hợp với ASP.NET Core MVC trình bày cách các khả năng này phù hợp với yêu cầu. Để biết thông tin chi tiết về API, xem tài liệu chính thức và tham chiếu API.
Hướng dẫn từng bước triển khai tích hợp với ASP.NET Core MVC
Hướng dẫn từng bước tích hợp với ASP.NET Core MVC này sẽ hướng dẫn bạn qua mỗi bước cấu hình cần thiết.
Cài đặt gói SDK
Thêm gói NuGet vào dự án của bạn.
dotnet add package GroupDocs.Rewriter-Cloud
Bạn cũng có thể tải xuống các tệp nhị phân từ trang tải xuống.
Thêm cấu hình cho thông tin xác thực Rewriter
Đặt AppSid và AppKey của bạn vào cấu hình. Đoạn mã dưới đây thêm chúng vào bộ nhớ để đơn giản.
builder.Configuration.AddInMemoryCollection(new[]
{
new KeyValuePair<string,string>("GroupDocsRewriter:AppSid", "YOUR_APP_SID"),
new KeyValuePair<string,string>("GroupDocsRewriter:AppKey", "YOUR_APP_KEY")
});
Đăng ký Rewriter API Client trong DI
Client SDK được đăng ký dưới dạng singleton để có thể được tiêm vào các controller.
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);
});
Tạo Controller MVC và View Model
Bộ điều khiển nhận văn bản gốc, gọi API Rewriter và trả về kết quả đã được viết lại.
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);
}
}
Mô hình view đi kèm chứa các chuỗi đầu vào và đầu ra.
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;
}
Xây dựng Razor View cho Nhập và Xuất Văn bản
Trang Razor hiển thị một biểu mẫu đơn giản và hiển thị văn bản đã được viết lại khi có sẵn.
@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");}
}
Ví dụ Hoàn chỉnh cho Việc Viết lại Tài liệu trong ASP.NET Core MVC
Ví dụ dưới đây chứa toàn bộ các tệp nguồn cần thiết để chạy giải pháp.
// ---------------------------------------------------
// 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");}
}
Lưu ý: Ví dụ mã này minh họa chức năng cốt lõi. Trước khi sử dụng trong dự án của bạn, hãy chắc chắn cập nhật mọi đường dẫn tệp và giá trị cấu hình để phù hợp với môi trường thực tế của bạn, xác minh rằng tất cả các phụ thuộc cần thiết đã được cài đặt đúng cách, và kiểm tra kỹ lưỡng trong môi trường phát triển. Nếu bạn gặp bất kỳ vấn đề nào, vui lòng tham khảo tài liệu chính thức hoặc liên hệ với đội hỗ trợ để được trợ giúp.
Thực thi Việc Viết lại Tài liệu qua REST API bằng cURL
Dưới đây là một quy trình cURL nhanh thực hiện cùng một thao tác viết lại thông qua các endpoint REST của GroupDocs Rewriter.
Xác thực và Lấy Token Truy cập
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"}'
Phản hồi trả về một access_token mà bạn sẽ sử dụng trong các cuộc gọi tiếp theo.
Tải lên Văn bản nguồn (tùy chọn cho các tệp lớn)
curl -X POST "https://api.groupdocs.cloud/v1/storage/file/upload" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-F "file=@input.txt"
Thực hiện thao tác viết lại
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"
}'
Phản hồi JSON chứa văn bản đã được viết lại trong trường result.text.
Tải xuống kết quả (nếu bạn đã lưu nó dưới dạng tệp)
curl -X GET "https://api.groupdocs.cloud/v1/storage/file/download?path=output.txt" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-o rewritten.txt
Để biết thêm chi tiết về các tham số yêu cầu và định dạng phản hồi, xem tài liệu API chính thức.
Suy nghĩ cuối cùng
Tích hợp GroupDocs.Rewriter Cloud SDK for .NET vào dự án ASP.NET Core MVC là rất đơn giản khi bạn làm theo hướng dẫn từng bước để tích hợp với ASP.NET Core MVC. Thư viện thực hiện phần lớn công việc của việc viết lại ngôn ngữ tự nhiên, cho phép bạn tập trung vào giao diện người dùng và logic nghiệp vụ. Hãy nhớ bảo mật AppSid và AppKey của bạn, sử dụng giấy phép tạm thời để đánh giá, và nâng cấp lên giấy phép đầy đủ cho các tải công việc sản xuất. Với mã nguồn và các ví dụ cURL trong tay, bạn hiện có thể thêm chức năng viết lại văn bản thông minh vào bất kỳ ứng dụng web .NET nào.
Câu hỏi thường gặp
Cách hướng dẫn từng bước tích hợp với ASP.NET Core MVC xử lý phản hồi lỗi từ API như thế nào?
Ví dụ controller kiểm tra ModelState.IsValid trước khi gọi API và lấy RewriteResponse. Nếu API trả về lỗi, đối tượng response sẽ là null, và view sẽ chỉ hiển thị đầu ra trống. Để biết cách xử lý lỗi chi tiết, hãy tham khảo tài liệu chính thức.
Tôi có thể viết lại các tài liệu không phải chỉ văn bản thuần, chẳng hạn như DOCX hoặc PDF, bằng cùng một cách tiếp cận không?
Có. Rewriter API chấp nhận văn bản thô được trích xuất từ các định dạng được hỗ trợ. Bạn có thể đầu tiên sử dụng GroupDocs.Parser hoặc GroupDocs.Conversion để trích xuất văn bản, sau đó truyền nó tới endpoint viết lại. Cả hai SDK đều được liệt kê trong họ sản phẩm GroupDocs.
Có thể chạy thao tác rewrite một cách bất đồng bộ trên một trang web có lưu lượng truy cập cao không?
Chắc chắn. Controller sử dụng await _rewriterApi.RewriteAsync(...), điều này hoàn toàn bất đồng bộ và mở rộng cùng pipeline bất đồng bộ của ASP.NET Core. Điều này phù hợp với mẫu được trình bày trong hướng dẫn từng bước để Tích hợp với ASP.NET Core MVC.
Bạn có thể lấy giấy phép tạm thời để thử nghiệm ở đâu?
Giấy phép tạm thời có sẵn trên trang giấy phép tạm thời. Nó cho phép bạn đánh giá SDK mà không cần cam kết mua hàng.
