Saab
Saab

Reputation: 1001

ASP.NET MVC3 routing REST services to controller

I want to route REST service url in the following way:

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

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

So basically I'm making a hardcoded exception for Rest in the url.

I'm not very familiar with MVC routing. So what would be a good way to achieve this?

Upvotes: 5

Views: 2239

Answers (1)

Jason Watts
Jason Watts

Reputation: 3860

Wherever you register your routes, commonly in 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"}
        );

In your controller

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

Upvotes: 16

Related Questions