所以我现在注册了以下路线:
configuration.Routes.MapHttpRoute(
name: "MediaHandler",
routeTemplate: "api/mediahandler/{action}/{id}",
defaults: new { controller = "PortalAsset", id = RouteParameter.Optional }
);
Controller 如下所示:
public class MediaHandlerController : ApiControllerBase
{
///...
[HttpGet]
[ActionName("download")]
public async Task<HttpResponseMessage> DownloadAsset(long id)
{
// action
}
我想向 Controller 添加 bool 参数 - isPreview
并希望按以下方式映射路由:
- http://host/api/mediahandler/download/1893映射到:
id
=1893,isPreview
=false - http://host/api/mediahandler/download/1893/preview映射到:
id
=1893,isPreview
= true
有什么办法可以实现这一点吗?
最佳答案
与 attribute routing你可以这样做
[RoutePrefix("api/mediahandler/download")]
public class MediaHandlerController : ApiControllerBase
{
[HttpGet]
[Route("{id}")]
public async Task<HttpResponseMessage> DownloadAsset(long id)
{
return DownloadAsset(id, false);
}
[HttpGet]
[Route("{id}/preview")]
public async Task<HttpResponseMessage> DownloadAssetPreview(long id)
{
return DownloadAsset(id, true);
}
private async Task<HttpResponseMessage> DownloadAsset(long id, bool isPreview)
{
// action
}
}
关于c# - 在 asp.net web API 中将路由参数映射为 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39490964/