WebAPI - 我如何"重载" GET方法?

时间:2016-06-03 14:39:26

标签: asp.net-web-api

所以我是ASP.NET webAPI的新手,我创建了一个名为:UsersController的控制器,它公开了4种CRUD方法。 如果用户致电:

  

GET /用户

  • 这将使用默认的Get方法

    public IEnumerable Get()

如果用户致电:

  

GET / users / 1234

  • 这反过来会调用:

    公共字符串Get(int id)

... BUT 如果我需要这样的东西怎么办?

  

获取/用户/男性

  • 我想要归还所有男性用户 和
  

GET / Users / Tall

  • 我想返回所有高级用户

如何覆盖/重载GET方法?

2 个答案:

答案 0 :(得分:0)

使用RouteAttribute。

在你的Api控制器中:

public IEnumerable Get()
{
}

public string Get(int id)
{
}

[Route("/Users/Tall")]
public IEnumerable GetTall()
{
}

有关详情:http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

答案 1 :(得分:0)

请看这里:https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

<块引用>

路线限制 路由约束可让您限制路由模板中参数的匹配方式。一般语法是“{parameter:constraint}”。例如:

[Route("users/{id:int}")]
public User GetUserById(int id) { ... }

Route("users/{name}")]
public User GetUserByName(string name) { ... }