Как сконфигурировать роуты в net 6

Разрабатываю REST API на ASP.NET Web API, используя net 6.0. В нем объединили классы Startup и Program.

Необходимо сделать следующие роуты:

[get] https://localhost:5001/api/tle

[get] https://localhost:5001/api/tle?satelliteId = {value}

[get] https://localhost:5001/api/tle?satelliteName = {value}

[Route("api/tle")]
[ApiController]
public class TleController : ControllerBase
{
    private readonly RemoteTleProvider _remoteTleProvider;

    /// <summary>
    /// Инициализирует TleController
    /// </summary>
    /// <param name="remoteTleProvider"></param>
    public TleController(RemoteTleProvider remoteTleProvider)
    {
        _remoteTleProvider = remoteTleProvider;
    }

    /// <summary>
    /// [HttpGet] api/tle?satelliteId = {?}
    /// </summary>
    /// <param name="satelliteId"></param>
    /// <returns></returns>
    [HttpGet]
    public async Task<Tle> GetTleBySatelliteId([FromQuery] int satelliteId)
    {
       return await _remoteTleProvider.GetTleAsync(satelliteId);
    }

    /// <summary>
    /// [HttpGet] api/tle?satelliteName = {?}
    /// </summary>
    /// <param name="satelliteName"></param>
    /// <returns></returns>
    [HttpGet]
    public async Task<Tle> GetTleBySatelliteName([FromQuery] string satelliteName)
    {
        return await _remoteTleProvider.GetTleAsync(satelliteName);
    }

    /// <summary>
    /// [HttpGet] api/tle
    /// </summary>
    /// <returns></returns>
    [HttpGet]
    public async Task<IEnumerable<Tle>> GetAll()
    {
        Dictionary<int, Tle> tles = await _remoteTleProvider.GetTlesAsync();
        return tles.Values;
    }

    /// <summary>
    /// Метод получения последнего времени обновления TLE файла
    /// </summary>
    /// <remarks>
    /// TLE файл обнавляется раз в час.
    /// </remarks>
    /// <returns>Время последнего обновления TLE файла</returns>
    [HttpGet]
    [Route("last_update")]
    public object GetLastUpdateTleTime()
    {
        return new { lastUpdate = _remoteTleProvider.LastRefresh };
    }
}

Раньше, для того чтобы в одном контролере было несколько get точек, необходимо было сконфигурировать роуты:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

И это работало.

Как в net 6 сконфигурировать роуты.

Если же это больше не возможно, то есть ли решение не используя костыли типа:

[HttpGet]
public async Task<IEnumerable<Tle>> GetTle([FromQuery] int? satelliteId, [FromQuery] string? satelliteName)
   {
        if (!string.IsNullOrEmpty(satelliteName) && !string.IsNullOrWhiteSpace(satelliteName))
        {
            return new[] { await _remoteTleProvider.GetTleAsync(satelliteName) };
        }
        if (satelliteId.HasValue)
        {
            return new[] { await _remoteTleProvider.GetTleAsync(satelliteId.Value) };
        }
        Dictionary<int, Tle> tles = await _remoteTleProvider.GetTlesAsync();
        return tles.Values;
    }

Ответы (0 шт):