一、webapi 路由机制
ASP.NET Web API路由,简单来说,就是把客户端请求映射到对应的Action上的过程。在"ASP.NET Web API实践系列03,路由模版, 路由惯例, 路由设置"一文中,体验了通过模版、惯例、HTTP方法来设置路由,这种做法的好处是把路由模版统一放在了App_Start文件夹下的WebApiConfig类中,方便管理,但缺点是不够灵活。
REST把一切都看成资源,有时候,一个资源连带子资源,比如Customer和Orders密切关联,我们可能希望输入这样的请求:customers/1/orders,但仅仅凭借惯例,很难实现这种路由。而实际上,ASP.NET Web API为我们准备了Route特性,该特性可以直接打到Action上,使用非常灵活、直观。
二、使用Route特性
在webapi 2中不用修改任何配置,直接可以使用Route 特性,而在webapi1中需要修改WebApiConfig(具体修改配置本章不讲),下面结合实例演示一下使用Route特性
首先创建一个Customer类
public class Customer { public int Id { get; set; } public string Name { get; set; } }
再创建一个Order类
public class Order { public int Id { get; set; } public decimal Total { get; set; } public int CustomerId { get; set; } public Customer Customer { get; set; } }
再创建一个Order集合类
public class DatabaseTest { public static IEnumerable<Order> GetOrdersByCustomerId(int customerId) { return GetOrders().Where(o => o.CustomerId == customerId); } private static IEnumerable<Order> GetOrders() { Customer cus1 = new Customer() { Id = 1, Name =