2012-07-11 1 views
3

내가이 길이 :웹 API를 라우팅 : 선택적 매개 변수가

routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{id}/{myparam}", 
       defaults: new { id = RouteParameter.Optional, myparam = RouteParameter.Optional } 
      ); 

'ID를'선택 aswell하지만 '하여 myParam'이 설정되어있는 경우 선택 사항이 아니어야 'ID를'해야 선택하고 '하여 myParam'이어야한다. 어떻게 구성 할 수 있습니까?

난 당신이 아마이 두 경로를 정의 할 필요가 있음을 추측 할

답변

5

: 그들이 ID를 포함할지 여부를 두 번째 값이 포함 된 URL과 일치합니다 동안

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

routes.MapHttpRoute(
      name: "DefaultApiWithMyParam", 
      routeTemplate: "api/{controller}/{id}/{myparam}" 
     ); 

첫 번째 경로는, 모든 URL과 일치합니다 id와 myparam 모두. 두 번째 경로에서는 세그먼트가 선택 사항이 아닙니다.