【问题标题】:ASP.net WebAPI controller directory/ routingASP.net WebAPI 控制器目录/路由
【发布时间】:2013-11-18 23:35:38
【问题描述】:
【问题讨论】:
标签:
c#
asp.net
web-services
asp.net-web-api
controller
【解决方案1】:
这不是很漂亮,但您可以设置路由,以便特定路径映射到特定控制器和操作。
config.Routes.MapHttpRoute("query1", "query/query1", new {controller="StockQueries", action="query1"});
config.Routes.MapHttpRoute("query2", "query/query2", new { controller = "StockQueries", action = "query2" });
config.Routes.MapHttpRoute("query3", "query/query3", new { controller = "StockQueries", action = "query3" });
然后有一个看起来像这样的控制器,
public class StockQueriesController : ApiController
{
[ActionName("query1")]
public HttpResponseMessage GetQuery1()
{
return new HttpResponseMessage() {Content = new StringContent("Query1")};
}
[ActionName("query2")]
public HttpResponseMessage GetQuery2()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
[ActionName("query3")]
public HttpResponseMessage GetQuery3()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
[ActionName("query4")]
public HttpResponseMessage GetQuery4()
{
return new HttpResponseMessage() { Content = new StringContent("Query1") };
}
}
【解决方案2】:
最简单的方法可能是属性路由。
你可以在这里找到更多信息:http://attributerouting.net/
它允许您直接在操作方法上声明任何路由权(带参数)。这样您就可以很容易地控制如何使您的资源可用。
如果您想对 API 进行版本控制,这也很容易,因为您可以在属性中包含版本
【解决方案4】:
您也可以使用以下方法:
[ActionName("DefaultApi")]
[Route("Api/UserLogin/DefaultApi/UserDetails")]
public IHttpActionResult UserDetails(){
return Ok(db.UserLogins.ToList());
}