У меня есть маршрут /my/route?t=something&...
, который обрабатывается методом действия, который затем включает t
и вызывает соответствующую подпрограмму для выполнения любых задач.Например:
[HttpGet("my/route")]
public IActionResult GetStuff([FromQuery(Name = "t")]string searchType)
{
switch (searchType)
{
case "type1":
return getStuff_type1();
case "type2":
return getStuff_type2();
default:
return BadRequest();
}
}
Однако каждая подпрограмма ожидает другие параметры запроса (некоторые / многие из которых могут отличаться в зависимости от потребностей подпрограммы).
Таким образом, "type1"
может принимать параметры запроса"a", "b", "c", "d";и "type2"
может принимать параметры запроса "v", "w", "x", "y", "z".
Очевидно, что я могу получить все параметры (abcdvwxyz и другие для других типов)в метод основного действия GetStuff
и передать их в подпрограммы соответствующим образом, но это громоздко / грязно ... было бы неплохо, если бы я мог как-то вызвать подпрограммы и просто позволить им указать желаемые параметры запроса, поэтому main GetStuff
не нужно было бы заботиться (это, вероятно, потребовало бы использования некоторых функций ASP.Net Core IoC, чтобы можно было выполнить параметры [FromQuery]
подпрограммы).
Другим вариантом было бы просто использовать подпрограммыRequest.Query
чтобы получить желаемые параметры, но это не объявляет / не документирует входные значения для подпрограммы - что не так хорошо для тестирования или ясности кода.
Вопрос в том, поддерживает ли ASP.Net Core имеет функциональность, позволяющую передавать запрос другому, определенному методу действия (и выполнять любые необходимые инъекции зависимостей)?