路由模板和路由特性

路由模板:$.getJSON("api/products/1",... public static void Register(HttpConfiguration config) { // Web API 路由 config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); } public class ProductsController : ApiController { Product[] products = new Product[] { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } }; public Product GetProductById(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } return product; } } 路由特性:$.getJSON("hzq/test/customers/1/orders",... public static void Register(HttpConfiguration config) { // Web API 路由 config.MapHttpAttributeRoutes(); } [RoutePrefix("hzq/test")] public class ProductsController : ApiController { Product[] products = new Product[] { new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } }; [Route("customers/{id}/orders")] public Product GetProductById(int id) { var product = products.FirstOrDefault((p) => p.Id == id); if (product == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } return product; } } 注:没有路由特性的action依据路由模板提供的路径;如果存在路由特性,则只依据路由特性提供的路径。 路由前缀只附加在路由特性之前,并且前缀第一个字符不能是"/"。
原文地址:https://www.cnblogs.com/ariter/p/6524224.html