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"
}
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
会 return:
{
"date": "2020-05-09T00:00:00",
"symbols": "HKD",
"base": "CAD"
}