Ini tentunya merupakan perubahan dari Beta ke RC. Dalam contoh yang diberikan dalam pertanyaan, Anda sekarang perlu menghias tindakan Anda dengan [HttpGet] atau [AcceptVerbs ("GET")].
Ini menyebabkan masalah jika Anda ingin menggabungkan tindakan berbasis kata kerja (yaitu "GetSomething", "PostSomething") dengan tindakan berbasis non-kata kerja. Jika Anda mencoba menggunakan atribut di atas, ini akan menyebabkan konflik dengan tindakan berbasis kata kerja di pengontrol Anda. Salah satu cara untuk mendapatkan arount yang akan menentukan rute terpisah untuk setiap kata kerja, dan mengatur tindakan default ke nama kata kerja. Pendekatan ini dapat digunakan untuk menentukan sumber daya turunan di API Anda. Misalnya, kode berikut mendukung: "/ resource / id / children" di mana id dan children bersifat opsional.
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") }
);
Mudah-mudahan versi Web API yang akan datang memiliki dukungan yang lebih baik untuk skenario ini. Saat ini ada masalah yang dicatat di proyek codeplex aspnetwebstack, http://aspnetwebstack.codeplex.com/workitem/184 . Jika ini adalah sesuatu yang ingin Anda lihat, harap berikan suara untuk masalah tersebut.