如何在URL中包含参数时触发ASP.NET核心API函数

How to trigger ASP.NET Core API function when the parameter is included in URL

我尝试触发 HeroesController 中的特定方法(第二个) class:

    [HttpGet]
    public IEnumerable<Hero> Get()
    {
        return Heroes;
    }

    [HttpGet("/name={term}")]
    public IEnumerable<Hero> Get(string term)
    {
        return Heroes;
    }

调用此 URL 后:

https://localhost:44375/heroes/?name=Spider 

第一个方法被触发,第二个没有。为什么?如何触发接收term参数的第二个?

正如 King King 在评论中指出的那样,url 不匹配,但最好的方法是;

[HttpGet] 
public IEnumerable<Hero> Get([FromQuery] string term) 
{ 
    return Heroes; 
}

如果传递查询参数 term,则将命中端点 https://localhost:44375/heroes?term=Spider

这里有两点需要区分 - URL 参数与查询参数。如果您想在执行 GET HTTP 调用时提供变量,这些是选项:

  1. 您要传递的变量可以是 URL:

    的一部分

    http://localhost:8080/yourResourceName/{varValue}

     [HttpGet]
     public Task<IActionResult> Get(string varValue)
     {
    
     }
    
  2. 您要传递的变量可以是查询参数:

    http://localhost:8080/yourResourceName?varname={varValue}

     [HttpGet]
     public Task<IActionResult> Get([FromQuery]string varValue)
     {
    
     }