.NET Core routing

0

Czy i w jaki sposób przy takim API jak poniżej można uprościć zapytania tak, żeby zawsze wysyłać jedynie api/Onu?parametry i w zależności od liczby parametrów wybierało odpowiednią metodę. Próbowałem oznaczania w atrybutami w stylu [HttpGet("oltId={oltId}&oltPortId={oltPortId}&onuId={onuId}")], ale mi to nie działa.

    [Route("api")]
    public class OnuApiController : Controller
    {
        // GET: api/OnuByOnuId?oltId=1&oltPortId=2&onuId=3
        [HttpGet("OnuByOnuId")]
        public async Task<IActionResult> GetOnuStateAsync(uint oltId, uint oltPortId, uint onuId)
        {

        }

        // GET: api/OnuByOnuSerialNumber?oltId=0&onuSerialNumber=DSNWcbd38907
        [HttpGet("OnuByOnuSerialNumber")]
        public async Task<IActionResult> GetOnuStateAsync(uint oltId, string onuSerialNumber)
        {

        }


1

A nie da się zrobić jakiegoś modelu z nullable propertisami, a później niech inny mechanizm determinuje co ma się wykonać pod spodem?

public async Task<IActionResult> GetOnuStateAsync(Input input)
{
	result = Handle(input);
}

public xyz Handle(Input input)
{
	if (input.Cos.HasValue && input.Cos2.HasValue && input.Cos3.HasValue)
		return InternalHandle1(input.Cos, input.Cos2, input.Cos3);
		
	if (input.Cos4.HasValue && input.Cos5.HasValue && input.Cos6.HasValue)
		return InternalHandle2(input.Cos4, input.Cos5, input.Cos6);
}

lub jakoś bardziej obiektowo niż na ifkach

1 użytkowników online, w tym zalogowanych: 0, gości: 1