2013-07-05 14 views
10

मार्ग में नेस्टेड संसाधनों से निपटने मैं इस तरह से बाकी एपीआई प्रदान करने के लिए करना चाहते हैं:ठीक ASP.net MVC 4 WebAPI

GET /api/devices 
POST /api/devices 
PUT /api/devices/1 
DELETE /api/devices/1 

यह मेरा विन्यास है:

config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

और इन कर रहे हैं क्रियाएं:

public IEnumerable<Device> Get() 
{ 
//return all devices 
} 

public Devices Get(id) 
{ 
//return a specific devices 
} 

और इसी तरह।

मुद्दा प्रकट होता है जब मैं नेस्ट संसाधनों हैंडल करना चाहते हैं:

GET /api/devices/1/readings 
POST /api/devices/1/readings 
GET /api/devices/1/readings/1 
PUT /api/devices/1/readings/1 
DELETE /api/devices/1/readings/1 

यह इन के लिए मेरे configration है:

config.Routes.MapHttpRoute(
    name: "NestedApi", 
    routeTemplate: "api/{controller}/{parentResourceId}/{action}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

मुद्दे को पता चलता है जब नेस्टेड संसाधन के लिए मिलता है और पोस्ट करने की कोशिश :

[HttpGet] 
public String Readings(int parentResourceId) 
{ 
    //return a list of readings for the device 
} 

[HttpPost] 
public String Readings(int parentResourceId) 
{ 
    //create and return the id of a reading for the device 
} 

यह निश्चित रूप से विफल रहा है क्योंकि इसमें दो कार्य हैं एक ही हस्ताक्षर।

मैं सबसे RESTful दृष्टिकोण

+0

यह http://stackoverflow.com/q/10783946/326110 और http://stackoverflow.com/questions/9594671/nested-resources-in-asp-net-mvc-4-webapi का डुप्लिकेट जैसा दिखता है/16094056 # 16094056 –

उत्तर

5

माइक्रोसॉफ्ट गुण अनुमार्गण प्रणाली के लचीलेपन को बढ़ाने के लिए रूटिंग जोड़ने के साथ इस को पूरा करने का एक तरीका से सुनना चाहते हैं। परिदृश्य पर their documentation पर एक नज़र डालें 3

वहाँ भी है की तरह स्टैक ओवरफ़्लो पर कुछ उत्तर:

How to handle hierarchical routes in ASP.NET Web API?

2

समाधान यदि आप और अधिक एक अधिक सामान्य समाधान चाहते हैं मार्ग मैपिंग निर्दिष्ट करने के आधार पर कर रहे हैं लेकिन, this इस विषय से संबंधित सबसे अच्छे समाधान से मैंने देखा है। बेशक, वेब एपीआई 2 में विशेषता रूटिंग है।

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