@embiid

Как должен быть путь для контроллера?

есть к примеру два урл:
localhost:port/map/country_name
localhost:port/map/country_name/city_name

нужно что бы из метода(экшена) при country_name(germany) вызывался один сервис и этот же сервис для country_name/city_name

я так понимабю, что это должен быть два отдельный метода?
если первый метод должен быть типу
[HttpGet("{country}")]
то каков должен быть входящий параметр для него, это FromQuery?
и такой же самый вопрос по поводу второго метода? как это должно выглядить?
  • Вопрос задан
  • 92 просмотра
Решения вопроса 1
@mvv-rus
Настоящий админ AD и ненастоящий программист
Если вы, как у вас написано, передаете название страны и города через путь в URL, то параметры метода Action для URL второго формата должен привязываться к переменной маршрутизации, примерно так:
[HttpGet("{country}/{city}")]
public IActionResult ActionMethod([FromRoute] String country, [FromRoute] String city) 
{
  //... method code
}

[FromRoute] можно и не писать, если параметров запроса (то, что после '?' в URL) нет: привязка по умолчанию выберет следующим источником переменные маршрутизации.
PS Можно обойтись одним методом действия (Action), если указать что city - параметр необязательный
[HttpGet("{country}/{city?}")]
public IActionResult ActionMethod([FromRoute] String country, [FromRoute] String? city) 
{
 if(city==null) {
  //... method 1 code 
 }
 else {
  //... method 2 code 
 }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы