首页 > 解决方案 > 可选路由参数

问题描述

    [Route("v2/Actual")]
    [HttpGet]
    public async Task<IEnumerable<MeasurementActualAggregatedResultViewModel>> GetActualsWithHierarchy(int calendarStartYear = 0, int calendarEndYear = 0, string managementSystem = "amspe")
    {
    
      var result = ...
    
      return result;
    } 



 // I want to make this recognise ....v2/Actual?measurementId=1&calendarMonth=12&calendarYear=2020
[Route("v2/Actual{measurementId}{calendarMonth}{calendarYear}")]     
[HttpGet]
public async Task<MeasurementActualAggregatedResultViewModel> GetActual(int measurementId, int calendarMonth, int calendarYear)
{
    return null;
}

我上面有一个 API,我想将路由配置为如上。我很难在有问号的地方找到有关 Route 参数规范的答案。

Route(...) 值应该包含什么?

谢谢你。

标签: c#asp.net-coreroutes

解决方案


只需使用如下所示的 Route 即可,请求 url 中的查询字符串将默认匹配实际的参数,无需添加查询字符串作为 Route 参数:

[Route("v2/Actual")]     
[HttpGet]
public async Task<MeasurementActualAggregatedResultViewModel> GetActual(int measurementId, int calendarMonth, int calendarYear)
{
    return null;
}

推荐阅读