2013-06-11 29 views
1

我正在尝试为我的API创建文档。到目前为止,我已经用Swagger.NetWeb API help pagesWeb API help pagesASP.NET Web API文档重复条目

这两个工具向我提供了从XML生成的正确文档,但它们都显示了重复的条目。我假设的有关我的路线是如何配置:

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

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

我在视图中看到的无论是从样本1和样本2,像这样的方法:

../sample1/method1 
../sample1/method2 

../sample2/method1 
../sample2/method2 

而且我想这一点:

../sample1/method1 

../sample2/method2 

任何想法?

+0

我对你的文章有点困惑。你能否提供更多细节,为什么你在这里有两条路线,看起来相似?像你的场景是什么?当你说'/ sample1/method1'时,'sample1'是一个控制器,或者'method1'是一个控制器...在任何情况下,HelpPage的工作方式是迭代通过路由集合中的每个路由并获取所有控制器和行动,可以从该路线... –

+0

哦对不起,没有解释得很好。 'sample1'和'sample2'是控制器下的子文件夹,所以我配置了两条路由。我猜是因为这个,HelpPage在所有api控制器中迭代两次。所以问题是如何将这些子文件夹内的控制器分开,而不是显示重复的方法? – jasenkoh

回答

2

根据您最近的评论,您可以通过设置路线限制并期望HelpPage正确显示来实现。下面的例子:

config.Routes.MapHttpRoute(
      name: "AdminRoute", 
      routeTemplate: "api/folder1/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional }, 
      constraints: new { controller = "Roles|Users" } 
     ); 

     config.Routes.MapHttpRoute(
      name: "RegularRoute", 
      routeTemplate: "api/folder2/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional }, 
      constraints: new { controller = "Products|Reviews" } 
     ); 

注意:如果你试图使文件夹是路径变量,然后HelpPage将无法显示的帮助文档。