Web-API 控制器多个 GET int 和 string 参数

Din*_*ino 1 c# asp.net-web-api asp.net-core-webapi

我想要一个具有多个 GET 的控制器,一个用于所有,一个带有 int 参数,另一个带有字符串参数。下面的例子仍然给我错误:

[ApiController]
[Route("[controller]")]
public class StudentsController : ControllerBase
{
    [HttpGet]
    public IEnumerable<Student> Get()
    {
        return GetStudents();
    }

    [HttpGet("{id}")]
    public Student Get(int id)
    {
        return GetStudents().FirstOrDefault(s=> s.id == id);
    }

    [HttpGet("{name}")]
    public Student Get(string name)
    {
        return GetStudents().FirstOrDefault(s=> s.name == name);
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑 当前我收到以下错误

在此输入图像描述

Taz*_*azz 5

和在 url 中被同等对待intstring因此无法区分方法。您需要拥有路线的附加部分,例如[HttpGet("id/{id}")]and [HttpGet("name/{name}")],或者使用查询字符串。

或者,您可以使用单个方法并尝试将参数解析为int,如果成功,则按 id 检索,否则按名称检索。