我有一个API动作:
[HttpGet, Route("{id}/overview/")]
public async Task<HttpResponseMessage> Overview(string id, DateTime from, DateTime? to)
{
...
}
正如您所注意到的,to
是可选参数,但是当我发出请求时:
'/ API /奶油/ 3d7dd454c00b /概述从= 2016-09-04T18:00:00.000Z
我收到404错误。如果我从参数中删除to
:
public async Task<HttpResponseMessage> Overview(string id, DateTime from)
然后一切正常。如何强制它使用to
参数?
答案 0 :(得分:6)
使用FromUri属性并使其成为可选
[HttpGet, Route("{id}/overview/")]
public async Task Overview(string id, [FromUri]DateTime from, [FromUri]DateTime? to = null)
{
...
}
为了扩展这个,我们选择了id参数,因为你已经在你的路由中指定了它,框架已经看到匹配的路由并尝试调用匹配的方法,即使路径缺少它尝试的其余参数从查询字符串中提取它们。
然后你得到你的404没有与你的通话匹配的方法,这是由于DateTime可以为空而不是可选的。
希望这有帮助