2013-06-11 2 views
1

내 API에 대한 설명서를 만들려고합니다. 지금까지 나는 시도했습니다 Swagger.NetWeb API help pagesASP.NET 웹 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 }); 

내가보기에 표시하는 것은에는 sample1 및 sample2를,이 같은에서 두 가지 방법입니다 : 나는 내 경로를 구성하는 방법 관련이 랬있어

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

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

그리고이 원하는 :

../sample1/method1 

../sample2/method2 

아이디어가 있으십니까?

+0

귀하의 게시물에 약간 혼란 스럽습니다. 비슷한 모양의 2 개의 노선이있는 이유에 대해 자세히 설명해 주시겠습니까? 당신 시나리오는 어떤가? '/ 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" } 
     ); 

참고 : 폴더를 경로 변수로 만들려고하면 도움말 페이지가 도움말 문서를 표시 할 수 없습니다.