0

У меня есть 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] атрибут, но та же проблема)

Edit: Я использую VS 2012 с платформы .NET 4

ответ

0

В результате я использовал строковые параметры даже для числа, используя int.Parse, чтобы выбросить ошибку, если значение неверно.

0

попробовать это:

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

если параметры недействительны, он должен заблокировать запрос.

+0

Спасибо, но атрибут маршрутизации, по-видимому, доступен с VS 2013. Я использую VS 2012 и .NET framework 4. Я обновлю свой вопрос. – aymeric

+0

О, я не знал об этом – Charlie

Смежные вопросы