是否可以使用自定义路线处理代码?
例如,客户端请求http://server.com/api/v1/json/profile/
上的服务器和我的代码调用ApiController
,MyAction
操作参数version=1
,format=json
,action=profile
。
答案 0 :(得分:1)
这样的东西?您必须使用不同的参数名称进行操作,这样就不会与控制器操作发生冲突。
.MapRoute("name", "api/v{version}/{format}/{_action}", new { controller = "ApiController", action = "MyAction" });
编辑让版本按照您想要的方式运行。
答案 1 :(得分:1)
我首先将“action”参数重命名为其他内容,否则路由会变得非常混乱(可能称之为目的?)。此外,我相信以下内容可行:
routes.MapRoute(
// name of your route
"MyRoute",
// route template
"api/v{version}/{format}/{purpose}",
// default route values
new {
controller = "ApiController",
action = "MyAction",
},
// constraints placed on parameters (make sure they are valid)
new {
version = @"^\d+$", // number only (can also include decimals)
format = @"^(json|text|xml)$", // if you want filtering...
}
);
然后:
public ApiController : Controller
{
public ActionResult MyAction(Int32 version, String format, String purpose)
{
throw new NotImplementedException();
}
}