2011-05-03 14 views
5

Quiero url servicio de rutas REST de la siguiente manera:ASP.NET MvC3 servicios REST de enrutamiento al controlador

/User/Rest/ -> UserRestController.Index() 
/User/Rest/Get -> UserRestController.Get() 

/User/ -> UserController.Index() 
/User/Get -> UserController.Get() 

Así que básicamente estoy haciendo una excepción codificado para el descanso en la url.

No estoy muy familiarizado con el enrutamiento MVC. Entonces, ¿cuál sería una buena manera de lograr esto?

Respuesta

16

Dondequiera que registrar sus rutas, comúnmente en global.ascx

 routes.MapRoute(
      "post-object", 
      "{controller}", 
      new {controller = "Home", action = "post"}, 
      new {httpMethod = new HttpMethodConstraint("POST")} 
     ); 

     routes.MapRoute(
      "get-object", 
      "{controller}/{id}", 
      new { controller = "Home", action = "get"}, 
      new { httpMethod = new HttpMethodConstraint("GET")} 
      ); 

     routes.MapRoute(
      "put-object", 
      "{controller}/{id}", 
      new { controller = "Home", action = "put" }, 
      new { httpMethod = new HttpMethodConstraint("PUT")} 
      ); 

     routes.MapRoute(
      "delete-object", 
      "{controller}/{id}", 
      new { controller = "Home", action = "delete" }, 
      new { httpMethod = new HttpMethodConstraint("DELETE") } 
      ); 


     routes.MapRoute(
      "Default",       // Route name 
      "{controller}",  // URL with parameters 
      new { controller = "Home", action = "Index" } // Parameter defaults 
      ,new[] {"ToolWatch.Presentation.API.Controllers"} 
     ); 

En su controlador

public ActionResult Get() { } 
public ActionResult Post() { } 
public ActionResult Put() { } 
public ActionResult Delete() { } 
Cuestiones relacionadas