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:
- Định tuyến dựa trên quy ước
- Đị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.