Web Api 如何处理此查询字符串?

How is this query string handled by Web Api?

2020-05-09?symbols=HKD&base=CAD 是一个查询字符串,用于检索 public API 中特定日期这两种货币之间的汇率。我知道字符串的第一部分应该是控制器的动作,其余部分应该是参数。但是 APIs 是如何处理这种类型的查询字符串的呢?他们每天都会产生一个新的动作?很难相信...

 public class RatesController : ApiController
{        

    public async Task<ActionResult> Get()
    {


    }
}

不,您不需要每天都创建一个新操作。日期值是一个路由参数。 您可以使用以下代码实现:

    public class RateModel
    {
        [FromRoute]
        public DateTime Date { get; set; }
        [FromQuery]
        public string Symbols { get; set; }
        [FromQuery]
        public string Base { get; set; }
    }

...
        [HttpGet("rate/{date}")]
        public ActionResult Get(RateModel model)
        {
            return Ok(model);
        }

然后在 ~/rate/2020-05-09?symbols=HKD&base=CAD

上调用 GET 方法

会 return:

{
  "date": "2020-05-09T00:00:00",
  "symbols": "HKD",
  "base": "CAD"
}