В приведенном вами примере демонстрируются параметры маршрута. Существует четкое различие между параметрами маршрута и параметрами запроса.
Чтобы выполнить sh параметры запроса, вы можете [FromQuery]
указать атрибуты вашего метода. Это позволит для предоставленного вами примера параметра запроса:
Пример: https://localhost:5000/api/persons?firstName=bob&lastName=smith
Вы также можете указать значения по умолчанию для них из параметров вашего метода. Вы можете объединить несколько параметров запроса в одно действие.
Для параметров маршрута параметры предоставляются через сам маршрут.
Пример: https://localhost:5000/api/persons/23
Эти параметры определены в атрибуте [HttpGet("{id}")]
действия вашего контроллера. Вы также можете ограничить параметр определенным типом, например int
. Это достигается добавлением двоеточия и указанием типа. Пример [HttpGet("{id:int}")]
. Никаких дополнительных атрибутов не требуется добавлять в параметры вашего метода для параметров маршрута.
Конечно, вы должны также объявить эти параметры в параметрах вашего метода для обоих типов.
// "/api/persons/23"
[HttpGet("{id}")]
public async Task<IActionResult> GetPersonById(int id)
{
// Code ...
}
// "/api/persons?firstName=bob&lastName=smith"
[HttpGet]
public async Task<IActionResult> GetPersonByName([FromQuery] string firstName = null, [FromQuery] string lastName = null)
{
// Code here... both firstName and lastName can now be optional or only one provided
}