C'est certainement un changement de Beta à RC. Dans l'exemple fourni dans la question, vous devez maintenant décorer votre action avec [HttpGet] ou [AcceptVerbs("GET")].
Cela pose un problème si vous souhaitez mélanger des actions basées sur le verbe (c'est-à-dire "GetSomething", "PostSomething") avec des actions non basées sur le verbe. Si vous essayez d'utiliser les attributs ci-dessus, cela entrera en conflit avec toute action basée sur le verbe dans votre contrôleur. Une façon de contourner cela serait de définir des routes séparées pour chaque verbe et de définir l'action par défaut sur le nom du verbe. Cette approche peut être utilisée pour définir des ressources enfants dans votre API. Par exemple, le code suivant prend en charge: "/resource/id/children" où id et children sont facultatifs.
context.Routes.MapHttpRoute(
name: "Api_Get",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Get" },
constraints: new { httpMethod = new HttpMethodConstraint("GET") }
);
context.Routes.MapHttpRoute(
name: "Api_Post",
routeTemplate: "{controller}/{id}/{action}",
defaults: new { id = RouteParameter.Optional, action = "Post" },
constraints: new { httpMethod = new HttpMethodConstraint("POST") }
);
Idéalement, les futures versions de Web API offriront un meilleur support pour ce scénario. Il y a actuellement un problème signalé sur le projet aspnetwebstack codeplex, http://aspnetwebstack.codeplex.com/workitem/184. Si c'est quelque chose que vous aimeriez voir, veuillez voter pour le problème.