我有一个像这样的ApiController:
SearchController : ApiController {
public Book Get(int booksn=-1, string author="")
{
/* search for books matching the parameters */
}
}
所有参数都有默认值,空的搜索请求会返回所有内容。
现在我的问题是,如果请求包含其他参数(例如API用户的打字错误),它仍然会路由到这个函数:
GET /search?booksn=3&hello=world
潜在的问题是,如果一个参数是用错误的类型发送的,它会以相同的方式路由,我不会在方法中获得参数值,所以我甚至不能发送错误响应:
GET /search?booksn=helloWorld
有办法防止这种情况发生吗?要么防止错误的类型,要么防止所有未定义的参数?(我也尝试过使用对象和[FromUri]属性,但问题相同)
编辑:我正在使用带有.NET framework 4 的VS 2012
试试这个:
[HttpGet()]
[Route()]
public Book Get(int booksn=-1, string author="")
如果参数无效,它应该阻止请求
我最终使用了字符串params,即使是数字,如果值不正确,也会使用int.Parse抛出错误。