鉴于uri ......
http://localhost:5613/api/user/1/HasCompletedInitialScreen
我配置了以下路线...
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "ApiUserHasCompletedInitialScreen",
routeTemplate: "api/user/{id}/{hascompletedinitialscreen}");
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
和控制器动作......
[HttpGet]
[ActionName("HasCompletedInitialScreen")]
public HttpResponseMessage HasCompletedInitialScreen(int id)
{
var response = Request.CreateResponse<bool>(HttpStatusCode.Created, true);
response.Headers.Location = GetLocation(id);
return response;
}
但是,我得到了404.如何修复路由配置和/或控制器操作以使其工作?
非常感谢!!
更新
根据接受的答案,我将api路由定义修改为以下内容。希望这有助于其他人...
config.Routes.MapHttpRoute(
name: "QueryApi",
routeTemplate: "api/{controller}/{id}/{action}");
答案 0 :(得分:2)
我不确定你要做什么但是,如果你想打电话
http://localhost:5613/api/user/1/HasCompletedInitialScreen
您的路线必须如下:
config.Routes.MapHttpRoute(
name: "ApiUserHasCompletedInitialScreen",
routeTemplate: "api/user/{id}/{action}",
defaults: new { controller = "Something" }
);
SomethingController
是包含HasCompletedInitialScreen
操作的控制器。
在旁注中,如果名称与您的操作方法名称相同,则无需声明ActionName
属性。