我有一个像这样的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]属性,但同样的问题)
编辑:我正在使用VS 2012与.NET framework 4
答案 0 :(得分:0)
试试这个:
[HttpGet()]
[Route()]
public Book Get(int booksn=-1, string author="")
如果参数无效,则应阻止请求
答案 1 :(得分:0)
我最终使用字符串参数甚至数字,如果值不正确,使用int.Parse抛出错误。