Web Api帮助和多条路线

时间:2013-11-07 13:17:16

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

我有一个web api项目(C#,asp.net MVC),我需要能够使用模板api / {controller} / {action} / {id}和api / {controller} /来调用操作{ID}。 为此,我为api控制器添加了2条路由:

 config.Routes.MapHttpRoute(
           name: "DefaultApi",
           routeTemplate: "api/{controller}/{action}/{id}",
           defaults: new { id = RouteParameter.Optional },
           constraints: new { action = @"^[a-zA-Z]+$" }
           );

        config.Routes.MapHttpRoute(
          name: "RestFull",
          routeTemplate: "api/{controller}/{id}",
          defaults: new { id = RouteParameter.Optional });

所以现在如果我有控制器MyController和方法Delete,我可以将它命名为DELETE api / MyController / Delete和DELETE api / MyController; 此外,我有自动生成的api帮助,在我添加了路由的第二个变体之后 - 现在有些方法在帮助中显示两次。

我想要的是每个动作在帮助中只有一个引用。 可能吗? 或者我的路由可能有问题,我可以有多个GET / POST方法,只需使用“api / {controller} / {id}”模板?

1 个答案:

答案 0 :(得分:1)

此处的关键字是“自动生成”API帮助。你有两条路线,所以你的帮助会列出它们。唯一的方法是不使用自动生成的帮助。但是,如果有两条路线可以做某事,那么两个应该被记录下来,否则,你应该只有一条路线可以开始。