Изучение манипуляций с URL-адресами в ASP.NET Core: руководство по написанию URL-адресов в нижнем регистре

В этой статье блога мы собираемся углубиться в мир манипулирования URL-адресами в ASP.NET Core. В частности, мы сосредоточимся на одной общей задаче: преобразовании URL-адресов в нижний регистр. Мы рассмотрим несколько методов достижения этой цели и предоставим примеры кода, которые помогут вам реализовать их в ваших приложениях ASP.NET Core.

Метод 1: пользовательское промежуточное программное обеспечение
Один из способов перевести URL-адреса в нижний регистр в ASP.NET Core — создать собственное промежуточное программное обеспечение. Промежуточное программное обеспечение находится между веб-сервером и вашим приложением, позволяя вам перехватывать и изменять входящие запросы. Вот пример того, как вы можете реализовать промежуточное программное обеспечение для URL-адресов в нижнем регистре:

public class LowercaseUrlMiddleware
{
    private readonly RequestDelegate _next;
    public LowercaseUrlMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task Invoke(HttpContext context)
    {
        context.Request.Path = context.Request.Path.ToString().ToLowerInvariant();
        await _next(context);
    }
}

Чтобы использовать это промежуточное программное обеспечение, вам необходимо зарегистрировать его в файле Startup.cs:

public void Configure(IApplicationBuilder app)
{
    app.UseMiddleware<LowercaseUrlMiddleware>();
    // Other middleware configurations
}

Метод 2: промежуточное программное обеспечение для перезаписи URL-адресов.
Другой подход заключается в использовании промежуточного программного обеспечения для перезаписи URL-адресов, предоставляемого ASP.NET Core. Это промежуточное программное обеспечение позволяет перезаписывать или перенаправлять URL-адреса на основе предопределенных правил. Вот пример того, как вы можете использовать его для преобразования URL-адресов в нижний регистр:

public void Configure(IApplicationBuilder app)
{
    var rewriteOptions = new RewriteOptions()
        .Add(RewriteLowerCaseRule);
    app.UseRewriter(rewriteOptions);
    // Other middleware configurations
}
private static void RewriteLowerCaseRule(RewriteContext context)
{
    var request = context.HttpContext.Request;
    var path = request.Path.ToString().ToLowerInvariant();
    context.HttpContext.Request.Path = new PathString(path);
    context.Result = RuleResult.ContinueRules;
}

Метод 3: пользовательское ограничение маршрута
Если вам нужен более детальный контроль над URL-адресами в нижнем регистре, вы можете создать собственное ограничение маршрута. Это позволяет вам определить ограничение, которое заставляет URL-адреса быть строчными. Вот пример:

public class LowercaseRouteConstraint : IRouteConstraint
{
    public bool Match(HttpContext httpContext, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
    {
        var url = httpContext.Request.Path.ToString();
        return url == url.ToLowerInvariant();
    }
}

Чтобы применить это ограничение к вашим маршрутам, вы можете использовать атрибут LowerCaseRouteConstraint:

[Route("api/[controller]")]
[LowerCaseRouteConstraint]
public class MyController : Controller
{
    // Controller actions
}

Перевести URL-адреса в нижний регистр в ASP.NET Core можно различными способами. В этой статье мы рассмотрели три подхода: пользовательское промежуточное программное обеспечение, промежуточное программное обеспечение для перезаписи URL-адресов и пользовательские ограничения маршрутов. Каждый метод обеспечивает разный уровень контроля и гибкости, что позволяет вам выбрать тот, который лучше всего соответствует вашим требованиям.

Внедряя URL-адреса в нижнем регистре, вы можете улучшить взаимодействие с пользователем и улучшить SEO-рейтинг своего веб-сайта. Не забудьте выбрать метод, соответствующий архитектуре и требованиям вашего приложения.