我有两个不同路径的api控制器:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "downloadApi",
routeTemplate: "api/{controller}/{download}/{id}"
);
我想对这些路线采取以下行动:
1 - 用于下载文件:public GetFile()
GET /api/v1/documents/download/id
2 - 获取文件信息:public GetFileInfo()
GET /api/v1/documents/id
所以在我的控制器中我想要采取这些行动:
public class DocumentsController : apiController
{
// triggers with GET /api/v1/documents/download/id
public HttpResponseMessage GetFile(){}
// triggers with GET /api/v1/documents/id
public HttpResponseMessage GetFileInfo(){}
}
我该怎么做?
由于
答案 0 :(得分:2)
以下是解释我的评论的一个例子。而不是在WebApiConfig.cs
中定义适用于某些路线的路线,而不是其他路线(我认为你无法做到,但我从未尝试过,也许你可以这样做),而不是Route
方法属性,用于定义方法级别使用的路由。
public class DocumentsController : apiController
{
// triggers with GET /api/v1/documents/download/id
[HttpGet]
[Route("api/v1/documents/download/{id}")]
public HttpResponseMessage GetFile(int id){}
// triggers with GET /api/v1/documents/id
[HttpGet]
[Route("api/v1/documents/{id}")]
public HttpResponseMessage GetFileInfo(int id){}
}
未经测试,但应该有效