आपका रूट मैप शायद कुछ इस प्रकार है:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
लेकिन एक ही http विधि के साथ कई कार्य करने के लिए आपको मार्ग के माध्यम से अधिक जानकारी के साथ वेबपीआई प्रदान करने की आवश्यकता है:
routes.MapHttpRoute(
name: "API Default",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional });
ध्यान दें कि अब रूटटेम्पलेट में एक क्रिया शामिल है। अधिक जानकारी यहाँ: http://www.asp.net/web-api/overview/web-api-rout-and-actions/rout-in-aspnet-web-api
अपडेट करें:
ठीक है, अब जब मुझे लगता है कि मैं समझता हूं कि आप यहाँ हैं तो इस पर एक और कदम उठाना चाहिए:
शायद आपको एक्शन यूआरएल पैरामीटर की आवश्यकता नहीं है और आपको उन सामग्रियों का वर्णन करना चाहिए जो आप दूसरे तरीके से हैं। चूंकि आप कह रहे हैं कि विधियाँ एक ही इकाई से डेटा लौटा रही हैं, तो बस मापदंडों को आपके लिए वर्णन करने दें।
उदाहरण के लिए आपके दो तरीकों को चालू किया जा सकता है:
public HttpResponseMessage Get()
{
return null;
}
public HttpResponseMessage Get(MyVm vm)
{
return null;
}
आप MyVm ऑब्जेक्ट में किस तरह का डेटा पास कर रहे हैं? यदि आप यूआरआई के माध्यम से बस चर पास करने में सक्षम हैं, तो मेरा सुझाव है कि वह मार्ग जा रहा है। अन्यथा, आपको अनुरोध के शरीर में ऑब्जेक्ट भेजने की आवश्यकता होगी और वह एक जीईटी करते समय आपके बहुत HTTP नहीं है (हालांकि यह काम करता है, बस [FromBody] infront of MyVm) का उपयोग करें।
उम्मीद है कि यह दिखाता है कि आपके पास कार्रवाई नाम या यहां तक कि [HttpGet] विशेषता का उपयोग किए बिना एक ही नियंत्रक में कई GET तरीके हो सकते हैं।