不存在参数的ApiController路由



我有一个像这样的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抛出错误。

相关内容

  • 没有找到相关文章

最新更新