0

我有一个这样的 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 框架 4 中使用 VS 2012

4

2 回答 2

0

尝试这个 :

[HttpGet()]
[Route()]
public Book Get(int booksn=-1, string author="")

如果参数无效,它应该阻止请求

于 2014-11-07T10:47:02.873 回答
0

我最终甚至对数字使用了字符串参数,如果值不正确,则使用 int.Parse 引发错误。

于 2014-11-07T14:05:38.727 回答