Gérer correctement les ressources imbriquées dans le routage ASP.net MVC 4 WebApi

J'aimerais fournir des API REST de cette façon:

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

C'est ma configuration:

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

Et ce sont les actions:

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

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

et ainsi de suite.

Le problème apparaît lorsque je veux gérer imbriquée ressources:

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

C'est mon configration pour ces:

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

La question s'affiche lorsque vous essayez d'OBTENIR et de POSTER à la imbriquée ressource:

[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
}

C'est, bien sûr, à défaut parce qu'il y a deux actions avec la même signature.

Je tiens à les entendre d'une façon d'accomplir ceci avec la plus Reposante approche

source d'informationauteur martincho