如何在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 调用时提供变量,这些是选项:
您要传递的变量可以是 URL:
的一部分
http://localhost:8080/yourResourceName/{varValue}
[HttpGet]
public Task<IActionResult> Get(string varValue)
{
}
您要传递的变量可以是查询参数:
http://localhost:8080/yourResourceName?varname={varValue}
[HttpGet]
public Task<IActionResult> Get([FromQuery]string varValue)
{
}
我尝试触发 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 调用时提供变量,这些是选项:
您要传递的变量可以是 URL:
的一部分http://localhost:8080/yourResourceName/{varValue}
[HttpGet] public Task<IActionResult> Get(string varValue) { }
您要传递的变量可以是查询参数:
http://localhost:8080/yourResourceName?varname={varValue}
[HttpGet] public Task<IActionResult> Get([FromQuery]string varValue) { }