Я хотел бы предоставить REST API таким образом:правильно обрабатывать вложенные ресурсы в 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 }
);
Проблема появляется при попытке GET и POST для вложенного ресурса :
[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 подхода
Это похоже на дубликат http://stackoverflow.com/q/10783946/326110 и http://stackoverflow.com/questions/9594671/nested-resources-in-asp-net-mvc-4-webapi/16094056 # 16094056 –