我将尝试在我的RESTapi中创建层级链接。例如:
以下URL将提供演员ID为1的详细信息:
/api/v1/actor/id/1/
以下URL应该会给我演员ID为1的所有电影:
/api/v1/actor/1/movies
我的路由:
config.Routes.MapHttpRoute(
name: "DefaultCAApi",
routeTemplate: "api/v1/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "DefaultOneLevelNested",
routeTemplate: "api/v1/{controller}/{levelOneId}/{action}",
defaults: new { id = RouteParameter.Optional }
);
ActorController
中我的操作:
[HttpGet]
public HttpResponseMessage Id(int id)
{
// logic
return Request.CreateResponse(HttpStatusCode.OK, actor);
}
[HttpGet]
public HttpResponseMessage Movies(int levelOneId)
{
// logic
return Request.CreateResponse(HttpStatusCode.OK, movies);
}
但是这个设置对我不起作用。
/api/v1/actor/id/1/
给我正确的响应。
但是 /api/v1/actor/1/movies
抛出以下错误:
No action was found on the controller 'Actor' that matches the name '1'."
我确实遵循了这个帖子,但对于我来说却没有起作用。
请问有人能为我指出哪里出错了吗?我正在使用MVC 4、WebAPI。