在App_Start/ WebApiConfig.cs文件中api
routes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } );
步驟:函數
1) 進行路由匹配,若匹配失敗則返回404spa
2) 找到對應的Controllercode
3) 找到對應的Action。blog
原則1:根據HTTP的方法,找以該方法開頭的函數。例如,HTTP的GET方法能夠對應 GetUser(int id)或者GetAllUser()ci
原則2:在1基礎上,若是其餘可選的參數設置了(例如{id}),則選擇相應知足的函數。路由
原則3:若是不存在對應的action,則調用失敗string
public class ProductsController : ApiController { [HttpGet] public Product FindProduct(id) {} [AcceptVerbs("GET", "HEAD")] public Product FindProduct(id) { } }
1) 依據URI中的Action字段選擇Actionit
routes.MapHttpRoute( name: "ActionApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } );
2) Action函數前,聲明容許的HTTP方法io
public class ProductsController : ApiController { [HttpGet] public string Details(int id); }
第二步中,也能夠對一個Action進行重載,使用ActionName關鍵字
public class ProductsController : ApiController { [HttpGet] [ActionName("Thumbnail")] public HttpResponseMessage GetThumbnailImage(int id); [HttpPost] [ActionName("Thumbnail")] public void AddThumbnailImage(int id); //防止被調用聲明 [NonAction] public string GetPrivateData() { ... } }