【问题标题】:How is this query string handled by Web Api?Web Api 如何处理这个查询字符串?
【发布时间】:2020-08-26 13:01:28
【问题描述】:
2020-05-09?symbols=HKD&base=CAD 是一个查询字符串,用于在公共 API 中检索这两种货币在特定日期的汇率。我知道字符串的第一部分应该是控制器的动作,其余部分是参数。但是 API 是如何处理这种类型的查询字符串的呢?他们每天都会生成一个新的 Action?这很难相信......
public class RatesController : ApiController
{
public async Task<ActionResult> Get()
{
}
}
【问题讨论】:
标签:
c#
rest
asp.net-web-api
query-string
【解决方案1】:
不,您不需要每天都创建一个新操作。日期值是一个路由参数。
您可以使用以下代码实现:
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方法
将返回:
{
"date": "2020-05-09T00:00:00",
"symbols": "HKD",
"base": "CAD"
}