有没有办法通过使用MVC4和WebAPI的基于约定的路由来路由复杂的API方法?

时间:2016-08-10 18:48:57

标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-mvc-routing

我们可以路由

GET TestService/{guidId}/Items?var1="A1"&var2="A2" 

(其中guidId参数将传递Guid值),使用基于约定的路由与MVC4和WebAPI1?

我知道这可以通过使用MVC5和WebAPI的属性路由轻松实现。

无论如何使用ASp.Net MVC4来实现上述要求吗?

1 个答案:

答案 0 :(得分:0)

假设一个控制器和这样的动作

public class TestServiceController : ApiController {
    [HttpGet]
    public HttpResponseMessage GetItems(Guid guidId, string var1, string var2) { ... }
}

可以像这样映射基于约定的路由

// Convention-based routing.
config.Routes.MapHttpRoute(
    name: "ItemsApi",
    routeTemplate: "TestService/{guidId}/Items",
    defaults: new { controller = "TestService", action = "GetItems" }
);

给定GET TestService/{guidId}/Items?var1="A1"&var2="A2"

模型绑定器将匹配路由中的{guidId}并从查询字符串中提取var1var2