MVC3 Restful Versioning Routes

时间:2011-10-06 23:44:55

标签: asp.net-mvc-3 rest routing

我们在MVC3中有一个RESTful API。我们希望将路由版本转到不同的控制器。我们目前的路线是:

routes.MapRoute("api1", "{controller}/{action}/v1");
//routes.MapRoute("api2", "{controller}/{action}/v2");

将来,当我们制作版本2时...确保v1 api进入控制器v1并且v2进入版本2 apis的最佳方法是什么?

感谢。

3 个答案:

答案 0 :(得分:3)

您可以将控制器硬编码到路径中

routes.MapRoute("api1", "{action}/v1", new { controller = "V1" });
routes.MapRoute("api2", "{action}/v2", new { controller = "V2" });

我不同意另一张海报,即URL中的版本控制一定是个坏主意。在版本输出缓存方面,URL版本控制更加灵活。

答案 1 :(得分:0)

如果有必要,版本控制不应通过URL完成。它应该在内容中完成。这就是为什么你没有看到为他们的网站创建HTML5网址的网站?

REST的主要目标是允许客户端和服务器独立发展。在绝大多数情况下,不应要求版本控制。

答案 2 :(得分:0)

另一种方法也可以是使用ASP.net MVC 区域来实现它。