2012-03-13 16 views
23

में दो पैरामीटर के साथ विधि एएसपी.NET वेब एपीआई का उपयोग करके मैं दो पैरामीटर के साथ विधि कैसे बना सकता हूं?एएसपीनेट वेब एपीआई

ताकि मैं इसे स्थानीय होस्ट की तरह कॉल कर सकते हैं/नियंत्रक/param1/param2

उत्तर

4

बस बदलने के लिए या Global.asax में रूट जोड़ें

routes.MapHttpRoute(name: "DefaultApi1", routeTemplate: "api/{controller}/{id}/{name}", Defaults: new{}); 
52

तुम भी में विशिष्ट पैरामीटर नाम के साथ यूआरएल कॉल कर सकते हैं क्वेरी स्ट्रिंग:

/api/actions?param1=5&param2=1/1/2000 

फिर नियंत्रक तरीका होगा:

GetByParams(int param1, DateTime param2) 
+5

यह बेहतर जवाब है। स्वीकृत उत्तर काम करता है, लेकिन यूआरएल ज्यादा समझ में नहीं आता है।/id/name यूआरएल के लिए इस तरह कुछ काम करता है: http: //www.mysite/api/DoStuff/12345/Vince। यह ज्यादा समझ में नहीं आता है। "विन्स" की तरह "12345" श्रेणी में कुछ आइटम है। http: //www.mysite/api/users/Vince बहुत अधिक समझ में आता है या http: //www.mysite/api/users? name = विन्स और आईडी = 12345 – vbullinger

+0

ग्रेट उत्तर। वास्तव में मैं क्या चाहता था। –

+0

क्या आप GetByParams विधि के बारे में आधिकारिक विवरण के लिए एक लिंक प्रदान करते हैं? मैं इसे ढूंढने में सक्षम नहीं हूं। मैंने इसका परीक्षण किया है, हालांकि, और जैसा कि आपने वर्णन किया है, यह काम करता है। – galmok

3

मुझे लगता है कि सबसे आसान तरीका केवल AttributeRouting का उपयोग करना है।

[Route("api/YOURCONTROLLER/{paramOne}/{paramTwo}")] 
public string Get(int paramOne, int paramTwo) { 
    return "The [Route] with multiple params worked"; 
} 

{} नामों को आपके पैरामीटर से मिलान करने की आवश्यकता है।

Attribute Routing in ASP.NET Web API 2

+0

यह मेरे लिए काम किया! धन्यवाद। –

+0

मैन मैंने इस 1000 बार इस्तेमाल किया, और हमेशा सोचा कि यह एक "हैक" जैसा था और बेहतर तरीका है। ऐसा लगता है कि यह वास्तव में सबसे अच्छा अभ्यास है .. – Kadaj

संबंधित मुद्दे