2012-07-11 3 views
3

J'ai cette route:Web routage api: paramètres optionnels

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

« id » devrait être facultatif et « MyParam » devrait être facultative aswell mais « id » ne doit pas être facultative si « MyParam » est réglé. Comment puis-je configurer cela?

Répondre

5

Je suppose que vous aurez probablement besoin de définir deux voies pour cela:

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

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

La première route détectera toutes les URL si elles contiennent un identifiant, alors que la seconde correspondra à des URL contenant des valeurs pour id et myparam. Notez qu'aucun segment n'est facultatif dans la deuxième route.