【问题标题】:How to use asp.net web api different method in same controller?如何在同一控制器中使用 asp.net web api 不同的方法?
【发布时间】:2014-11-29 07:08:49
【问题描述】:

我想在同一个 api 控制器中使用 asp.net web api 不同的方法。我搜索了,但我找不到。

例如:

public class HomeController : ApiController
{
    AdFindDBEntities db = new AdFindDBEntities();
    public HomeController()
    {
        db.Configuration.ProxyCreationEnabled = false;
    }

    [HttpGet]
    public List<Ad> AllAds()
    {
        return db.Ad.ToList();

    }

    [HttpGet]
    public IEnumerable<Ad> GetLastAds()
    {
        return db.Ad.OrderByDescending(x => x.CreatedDate).Take(20).ToList();
    }
}

当我运行项目时,AllAds 方法正在运行。我不知道如何使用 GetLastAds 方法。请帮帮我!

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 asp.net-web-api asp.net-web-api2


    【解决方案1】:

    使用[Route] 属性进行分离调用您的操作

    [HttpGet]
    [Route("api/home/ads}")]
    public List<Ad> AllAds()
    {
     ...
    }
    
    
    [HttpGet]
    [Route("api/home/ads/last}")]
    public List<Ad> GetLastAds()
    {
     ...
    }
    

    【讨论】:

      【解决方案2】:

      将默认路由更改为在路由中包含 {action}

      routes.MapHttpRoute(
             name: "DefaultApi",
             routeTemplate: "api/{controller}/{action}/{id}",
             defaults: new { id = RouteParameter.Optional }
      

      通过这种方式,您可以通过不同的 url 调用多个操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-12-13
        • 2012-09-24
        • 1970-01-01
        • 1970-01-01
        • 2021-07-26
        • 2013-06-02
        • 1970-01-01
        相关资源
        最近更新 更多