ASP.NET Web API - Định tuyến API Web

Định tuyến API Web

Trong phần trước, chúng ta đã biết rằng Web API có thể được cấu hình trong lớp WebApiConfig. Ở đây, chúng ta sẽ tìm hiểu cách cấu hình các tuyến Web API.

Định tuyến Web API tương tự như Định tuyến ASP.NET MVC. Nó định tuyến một yêu cầu HTTP đến một phương thức hành động cụ thể trên bộ điều khiển Web API.

Web API hỗ trợ hai loại định tuyến:

  1. Định tuyến dựa trên quy ước
  2. Định tuyến thuộc tính

Định tuyến dựa trên quy ước
Trong định tuyến dựa trên quy ước, Web API sử dụng các mẫu tuyến để xác định bộ điều khiển và phương thức hành động nào sẽ thực thi. Ít nhất một mẫu tuyến phải được thêm vào bảng tuyến để xử lý các yêu cầu HTTP khác nhau.

Khi chúng tôi tạo dự án Web API bằng mẫu WebAPI trong phần Tạo dự án Web API, nó cũng đã thêm lớp WebApiConfig trong thư mục App_Start với tuyến mặc định như được hiển thị bên dưới.

Ví dụ: WebApiConfig với định tuyến mặc định

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        // Enable attribute routing
        config.MapHttpAttributeRoutes();
        
        // Add default route using convention-based routing
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

Trong phương thức WebApiConfig.Register() ở trên, config.MapHttpAttributeRoutes() cho phép định tuyến thuộc tính mà chúng ta sẽ tìm hiểu sau trong phần này. config.Routes là bảng định tuyến hoặc bộ sưu tập định tuyến có kiểu HttpRouteCollection. Tuyến "DefaultApi" được thêm vào bảng định tuyến bằng phương thức mở rộng MapHttpRoute(). Phương thức mở rộng MapHttpRoute() tạo nội bộ một thể hiện mới của IHttpRoute và thêm nó vào một HttpRouteCollection. Tuy nhiên, bạn có thể tạo một tuyến mới và thêm nó vào bộ sưu tập theo cách thủ công như được hiển thị bên dưới.

Ví dụ: Thêm định tuyến mặc định

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.MapHttpAttributeRoutes();
        
        // define route
        IHttpRoute defaultRoute = config.Routes.CreateRoute("api/{controller}/{id}", 
                                            new { id = RouteParameter.Optional }, null);
            
        // Add route
        config.Routes.Add("DefaultApi", defaultRoute);

    }
}

Bảng sau liệt kê các tham số của phương thức MapHttpRoute().

Tham số Mô tả
name Tên định tuyến
routeTemplate Mẫu URL của định tuyến
defaults Một tham số đối tượng bao gồm các giá trị định tuyến mặc định
constraints Biểu thức chính quy để chỉ định đặc điểm của các giá trị định tuyến
handler Trình xử lý mà yêu cầu sẽ được gửi tới.

Bây giờ, chúng ta hãy xem cách Web API xử lý yêu cầu http đến và gửi phản hồi.