在ASP.NET Web API中映射HTTP路由

时间:2012-04-23 22:49:35

标签: asp.net asp.net-web-api

假设我有一个包含订单和订单详情的应用。我试图弄清楚如何最好地设置架构,以便我可以检索特定订单的所有订单详细信息。拥有像这样的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类中映射到的方法。上面的路由在我的控制器类中期望什么方法签名?据我所知,这甚至都没有效果,所以请随意推荐一种不同的方法。

4 个答案:

答案 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)

答案 3 :(得分:0)

将System.Web.Http.WebHost dll引用添加到您的Web应用程序中。谢谢。