MVC Restful API
Exemplo de roteamento para que o mvc considere o HttpMethod como uma constraint
routes.MapHttpRoute("Route1", "{controller}/{id}/transactions/history", new { controller = "Account", action = "GetTransactionHistory" });
routes.MapHttpRoute("Route2", "{controller}/{id}/transactions", new { controller = "Account", action = "GetTransactionHistory" }, new { httpMethod = new HttpMethodConstraint(new string[] { "GET" }) });
routes.MapHttpRoute("Route3", "{controller}/{id}/transactions", new { controller = "Account", action = "CreateTransaction" }, new { httpMethod = new HttpMethodConstraint(new string[] { "POST" }) });
routes.MapHttpRoute("Route4", "{controller}/{id}", new { controller = "Account", action = "GetAccount" }, new { httpMethod = new HttpMethodConstraint(new string[] { "GET" }) });
routes.MapHttpRoute("Route5", "{controller}/{id}", new { controller = "Account", action = "CreateAccount" }, new { httpMethod = new HttpMethodConstraint(new string[] { "POST" }) });
ReferĂȘncia
http://dylanbeattie.blogspot.com.br/2009/10/restful-routing-in-aspnet-mvc-2-preview.html