Chuyển hướng đơn giản với ASP.NET Core Endpoint

Khi các ứng dụng web phát triển và chúng ta hiểu rõ hơn các vấn đề mà chúng ta đang giải quyết, việc sắp xếp lại các tuyến đường trở thành vấn đề khó chịu không thể tránh khỏi.

Trong bài viết ngắn nhưng hữu ích này, chúng ta sẽ thêm một số phương thức mở rộng vào interface IEndpointRouteBuilder để giúp việc lập bản đồ chuyển hướng trở nên dễ dàng.

Sử dụng Redirect và RedirectPermanent

Trước khi chúng ta thấy việc triển khai các phương thức mở rộng cho Redirect của mình, hãy xem cách chúng ta sẽ sử dụng chúng trong mã đăng ký điểm cuối (endpoint) của chúng ta. Chúng ta sẽ sử dụng các tính năng của C# 9 như kiểu dữ liệu mục tiêu mớirecord để giữ nhiễu mã ở mức tối thiểu.

app.UseEndpoints(endpoints =>
{
    // redirect to one route
    endpoints.Redirect("/", "/hello");

    // redirect permanently to a route
    endpoints.RedirectPermanent("/bye", "hello");
    
    // or multiple redirects
    endpoints.Redirect(
        new ("/hi", "/hello"),
        new ("/hola", "/hello"),
        new ("/wassup", "/hello", true)
    );

    endpoints.MapGet("/hello", async context =>
    {
        await context.Response.WriteAsync("Hello World!");
    });
});

Với một vài lệnh cấu hình đơn giản sử dụng Redirect, RedirectPermanent Redirect(params Redirective[]), chúng ta có được một API chuyển hướng mạnh mẽ. Thật tuyệt phải không ?! Tất nhiên là thế rồi. Hãy xem cách chúng ta có thể triển khai nó trong các ứng dụng web ASP.NET Core của chúng ta.

Triển khai các phương thức mở rộng cho RedirectRedirectPermanent

Việc triển khai các phương thức mở rộng của chúng ta yêu cầu sử dụng phương thức MapGet trên đối tượng IApplicationBuilder và sau đó chúng ta cần gọi phương thức Redirect từ HttpContext. Nhìn chung, các phương thức mở rộng này hoạt động tương tự nhau.

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Routing;

public static class EndpointExtensions
{
    public static IEndpointRouteBuilder Redirect(
        this IEndpointRouteBuilder endpoints,
        string from, string to)
    {
        return Redirect(endpoints,
            new Redirective(from, to));
    }

    public static IEndpointRouteBuilder RedirectPermanent(
        this IEndpointRouteBuilder endpoints,
        string from, string to)
    {
        return Redirect(endpoints,
            new Redirective(from, to, true));
    }

    public static IEndpointRouteBuilder Redirect(
        this IEndpointRouteBuilder endpoints,
        params Redirective[] paths
    )
    {
        foreach (var (from, to, permanent) in paths)
        {
            endpoints.MapGet(from, async http => { http.Response.Redirect(to, permanent); });
        }

        return endpoints;
    }
}

public record Redirective(string From, string To, bool Permanent = false);

Vậy là bạn đã có nó! Một tập hợp các phương thức mở rộng đơn giản chắc chắn sẽ làm cho công việc khó khăn của việc ánh xạ lại và chuyển hướng các tuyến đường dễ dàng hơn cho bạn và nhóm phát triển web của bạn.

Như thường lệ, cảm ơn bạn đã dành thời gian đọc bài viết này!

Nếu Comdy hữu ích và giúp bạn tiết kiệm thời gian làm việc

Bạn có thể vui lòng đưa Comdy vào whitelist của trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi trong việc trả tiền cho dịch vụ lưu trữ web để duy trì hoạt động của trang web.

ASP.NET Core MVCASP.NET Core.NET CoreLập Trình C#
Bài Viết Liên Quan:
Tạo liên kết đến các endpoint của ASP.NET Core
Trung Nguyen 02/11/2021
Tạo liên kết đến các endpoint của ASP.NET Core

Trong bài viết này, chúng ta sẽ tìm hiểu cách đặt tên cho các endpoint để có thể tạo liên kết đến chúng từ bất kỳ đâu trong ứng dụng ASP.NET Core.

Cách thêm model vào dự án ASP.NET Core
Trung Nguyen 31/10/2021
Cách thêm model vào dự án ASP.NET Core

Trong bài viết này, chúng ta sẽ khám phá Model trong ASP.NET Core và các sub-framework khác như ASP.NET Core MVC, Razor Pages, Endpoints và Blazor.

Sử dụng Svelte trong dự án ASP.NET Core
Trung Nguyen 30/10/2021
Sử dụng Svelte trong dự án ASP.NET Core

Bài viết này sẽ giới thiệu cho bạn những điều cơ bản về việc thiết lập một dự án ASP.NET Core để sử dụng các component Svelte phía máy khách.

Background Service trong ASP.NET Core
Trung Nguyen 28/10/2021
Background Service trong ASP.NET Core

Bài viết này hướng dẫn cách triển khai một background service trong ứng dụng ASP.NET Core và cách giao tiếp với background service từ một HTTP request.