假设我有一个包含订单和订单详情的应用。我试图弄清楚如何最好地设置架构,以便我可以检索特定订单的所有订单详细信息。拥有像这样的URL结构似乎很优雅和直观:
http://example.com/api/orders/{orderid}/orderdetails
我可以在global.asax中注册路由:
System.Web.Routing.RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/orders/{orderid}/orderdetails",
defaults: new { orderid = System.Web.Http.RouteParameter.Optional }
);
但我无法弄清楚OrdersController类中映射到的方法。上面的路由在我的控制器类中期望什么方法签名?据我所知,这甚至都没有效果,所以请随意推荐一种不同的方法。
答案 0 :(得分:3)
我使用了以下内容。
Global.asax Application_Start:
System.Web.Routing.RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{orderid}/{action}"
);
控制器类:
[ActionName("OrderDetails")]
public IEnumerable<OrderDetail> GetOrderDetails(int orderId)
{
// return data...
}
答案 1 :(得分:0)
看一下令人惊叹的AttributeRouting.WebAPI包http://www.strathweb.com/2012/05/attribute-based-routing-in-asp-net-web-api/。
答案 2 :(得分:0)
请看下面的页面。这会很有帮助 http://aspnetwebstack.codeplex.com/wikipage?title=Attribute%20routing%20in%20Web%20API
答案 3 :(得分:0)
将System.Web.Http.WebHost dll引用添加到您的Web应用程序中。谢谢。