[Route("api/[controller]")]
С этим шаблоном вы явно заявляете, что вам важно только имя контроллера. В вашем примере GetInstitutionNamesById
- это имя действия , которое не рассматривается шаблоном.
Здесь есть несколько вариантов достижения того, о чем вы просите:
Измените шаблон [Route]
, включив в него название действия:
[Route("api/[controller]/[action]")]
Эта опция применяется ко всем действиям внутри вашего контроллера.
Измените атрибут ограничения HttpGet
, чтобы указать действие неявно :
[HttpGet("[action]")]
Эта опция гарантирует, что имя вашего метода действия всегда будет использоваться в качестве маршрута
сегмент.
Измените атрибут ограничения HttpGet
, чтобы указать действие явно :
[HttpGet("GetInstitutionNamesById")]
Этот параметр позволяет использовать сегмент маршрута, который отличается от имени самого метода действия.
С точки зрения того, правильно ли вы здесь используете маршрутизацию - это несколько основано на мнении. Как правило, вы увидите, что API пытаются быть RESTful, используя шаблоны маршрутов, соответствующие ресурсам и т. Д. При таком подходе вы можете получить что-то более похожее на следующее:
/api/Users/{userId}/InstitutionNames
В этом случае у вас может быть отдельный контроллер InstitutionNames
или вы можете подключить его к контроллеру Users
. Есть действительно много способов сделать это, но я не буду вдаваться в подробности здесь, поскольку это немного не по теме и основано на мнениях.