मैं पथ मानकों के साथ ट्रेन के साथ अपने एपीआई, एक पर तरीकों प्राप्त करने के लिए करना चाहते हैं:कैसे पथ से क्वेरी पैरामीटर भेद करने के लिए पैरामीटर
API/लोग/{personId}
और ? क्वेरी पैरामीटर के साथ ट्रेन के साथ एक:
API/लोगों पाठ = कुछ
लेकिन अगर मैं इस कोड डाल:
// GET: api/people/{personId}
[Route("api/people/{personId}")]
[HttpGet]
public HttpResponseMessage Get(long personId)
{
}
// GET: api/people?text=something
[Route("api/people")]
[HttpGet]
public HttpResponseMessage Get(string text)
{
}
और फिर /API/लोगों को खोलने का प्रयास/1 यह कहता है कि गलत प्रारूप और जब मैं /API/लोगों पाठ = कुछ को खोलने का प्रयास यह? काम करता है।
मैं केवल डिफ़ॉल्ट मार्ग को परिभाषित किया है:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
मैं उन्हें कैसे हो सकता है दोनों काम कर रहे? परिभाषित करें कि यदि यह पथ पैरामीटर पहले पर जाता है और यदि यह एक क्वेरी पैरामीटर दूसरे पर जाता है?
क्या होता है जब आप 'long' से' int' बदलते हैं? (जिज्ञासा से बाहर)। अच्छा सवाल, यद्यपि। मुझे जवाब (अभी तक) पर यकीन नहीं है। मैंने सोचा नहीं होगा कि आपको इस कोड को देखने से कोई समस्या होगी। –
मैंने वेब एपीआई 2.2 के साथ इस सटीक परिदृश्य का परीक्षण किया है और यह काम करता है। मुझे लगता है कि आप पुराने वेब एपीआई संस्करण का उपयोग कर रहे हैं। –
@JayMee 'long' या' int' परिणाम एक ही –