यह निश्चित रूप से बीटा से आरसी में बदलाव है। प्रश्न में दिए गए उदाहरण में, अब आपको [HttpGet] या [AcceptVerbs ("GET")] के साथ अपनी कार्रवाई को सजाने की आवश्यकता है।
यह एक समस्या का कारण बनता है अगर आप क्रिया आधारित क्रियाओं (जैसे कि "गेटसमॉर्टिंग", "पोस्टसोमिंग") को गैर क्रिया आधारित क्रियाओं के साथ मिलाना चाहते हैं। यदि आप उपरोक्त विशेषताओं का उपयोग करने की कोशिश करते हैं, तो यह आपके नियंत्रक में क्रिया आधारित किसी भी कार्रवाई के साथ संघर्ष का कारण होगा। एक तरीका यह है कि प्रत्येक क्रिया के लिए अलग-अलग मार्गों को परिभाषित किया जाए, और क्रिया के नाम पर डिफ़ॉल्ट क्रिया निर्धारित की जाए। इस दृष्टिकोण का उपयोग आपके एपीआई में बाल संसाधनों को परिभाषित करने के लिए किया जा सकता है। उदाहरण के लिए, निम्नलिखित कोड का समर्थन करता है: "/ संसाधन / आईडी / बच्चे" जहां आईडी और बच्चे वैकल्पिक हैं।
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") }
);
उम्मीद है कि वेब एपीआई के भविष्य के संस्करणों को इस परिदृश्य के लिए बेहतर समर्थन मिलेगा। वर्तमान में Aspnetwebstack कोडप्लेक्स प्रोजेक्ट, http://aspnetwebstack.codeplex.com/workitem/184 पर लॉग इन किया गया एक समस्या है । यदि यह कुछ ऐसा है जिसे आप देखना चाहते हैं, तो कृपया इस मुद्दे पर वोट करें।