2012-03-20 21 views
5

मैं इस तरह प्राप्त कार्रवाई के साथ ApiController है:ASP.NET वेब एपीआई: वैकल्पिक Guid पैरामीटर

public IEnumerable<Note> Get(Guid userId, Guid tagId) 
{ 
    var userNotes = _repository.Get(x => x.UserId == userId); 
    var tagedNotes = _repository.Get(x => x.TagId == tagId);  

    return userNotes.Union(tagedNotes).Distinct(); 
} 

मैं चाहता हूँ कि निम्नलिखित अनुरोध इस कार्रवाई के लिए निर्देशित किया गया था:

  • http: // {somedomain}/API/नोट्स userId = {GUID} & tagId = {GUID}
  • http: // {somedomain}/API/नोट्स userId = {GUID}
  • http: // {somedomain}/एपीआई/नोट्स? टैग आईडी = {ग्रिड}

मुझे यह किस तरह से करना चाहिए?

अद्यतन: सावधान रहें, एपीआई नियंत्रक के पास पैरामीटर के बिना एक और जीईटी विधि नहीं होनी चाहिए या आपको एक वैकल्पिक पैरामीटर के साथ कार्रवाई का उपयोग करना चाहिए।

उत्तर

9

आप इसे एक डिफ़ॉल्ट मान (Guid.Empty)

public IEnumerable<Note> Get(Guid? userId = null, Guid? tagId = null) 
{ 
    var userNotes = userId.HasValue ? _repository.Get(x => x.UserId == userId.Value) : new List<Note>(); 
    var tagNotes = tagId.HasValue ? _repository.Get(x => x.TagId == tagId.Value) : new List<Note>(); 
    return userNotes.Union(tagNotes).Distinct(); 
} 
+0

धन्यवाद के साथ काम कर सकते हैं, Nullable प्रकार (iirc उपयोग करने की आवश्यकता है, यह काम करता है – ebashmakov

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