Asp.net web api WebAPI-我该怎么做;超载“;获取方法?

Asp.net web api WebAPI-我该怎么做;超载“;获取方法?,asp.net-web-api,Asp.net Web Api,因此,我对ASP.NET webAPI不熟悉,我创建了一个名为UsersController的控制器,它公开了4个CRUD方法。 如果用户呼叫: 获取/访问用户 这将使用默认的Get方法 公共IEnumerable Get() 如果用户呼叫: 获取/users/1234 这反过来将要求: 公共字符串Get(int-id) 但是。。。 如果我需要像这样的东西怎么办 获取/用户/男性 我想返回所有男性用户 及 获得/用户/身高 我想返回所有高个子用户 如何重写/重载GET方法?使用R

因此,我对ASP.NET webAPI不熟悉,我创建了一个名为UsersController的控制器,它公开了4个CRUD方法。 如果用户呼叫:

获取/访问用户

  • 这将使用默认的Get方法

    公共IEnumerable Get()

如果用户呼叫:

获取/users/1234

  • 这反过来将要求:

    公共字符串Get(int-id)

但是。。。 如果我需要像这样的东西怎么办

获取/用户/男性

  • 我想返回所有男性用户 及
获得/用户/身高

  • 我想返回所有高个子用户
如何重写/重载GET方法?

使用RouteAttribute

在Api控制器中:

public IEnumerable Get()
{
}

public string Get(int id)
{
}

[Route("/Users/Tall")]
public IEnumerable GetTall()
{
}
有关以下内容的更多信息:。

请参见此处:

路线约束 管线约束允许您限制管线模板中参数的匹配方式。一般语法为“{parameter:constraint}”。例如:


我在哪里添加这个?我的ApicController没有属性在getAll()方法中使用该属性。请参阅更新的答案。我收到以下错误:参数字典包含“RESTServices.Controllers.recordsController”中方法“System.String Get(Int32)”的非null类型“System.Int32”的参数“id”的null条目。可选参数必须是引用类型、可为Null的类型或声明为可选参数。无论ASP.NET webapi的默认值是什么,它都是空控制器。您可能在不传递整数值的情况下调用Get(int id)方法。调用应该类似于“”,其中123是一个id。
[Route("users/{id:int}")]
public User GetUserById(int id) { ... }

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