2015-02-22 4 views
5

я имею установку маршрут быть: [Маршрут ("{ID}/пользователей/поиск/{Поиск}")] и связанное с ним действие: SomeAction (интермедиат идентификатор, текст строки)Web Api 2 пустой строковый параметр GET

Услуга имеет следующую функцию. для ресурса с id = {id}, а пользователи этого ресурса получают пользователей, которые соответствуют термину {search} (имя пользователя, адрес электронной почты и т. Д.).

{поиск} может иметь значение, поэтому служба возвращает только соответствующие объекты или не имеет значения (пустая строка или нуль), поэтому служба возвращает все.

Для части со значением она отлично работает. Для второй части я не могу найти что-то, чтобы установить запрос получения, который соответствует пустой строке.

я попытался следующие: 1/пользователей/поиск/нуль {Поиск} = "нулевой" 1/пользователей/поиск/не соответствует маршруту 1/пользователей/поиск не соответствует прокладывайте

имеет кто-нибудь подскажет, как это можно сделать?

Update: я пытался заменить действие: SomeAction (INT идентификатор, строка текста) с: SomeAction (модель модель), где модель является

public class ApplicationUserSearchModel 
{ 
    [Required] 
    public int Id { get; set; } 
    [Required(AllowEmptyStrings = true)] 
    public string MatchText { get; set; } 
} 

не повезло, так как я не знать, что отправить, чтобы соответствовать URL-адресу.

ответ

4

Вы должны пометить свой search параметр ?, чтобы пометить его как необязательный по маршруту и ​​установить его по умолчанию null.

[Route("{id}/users/search/{search?}")] 
public HttpResponseMessage Search(int id, string search = null)  

Первоначально я думал, имена параметров маршрута/действия были проблемой, но я был неверен. Вот предыдущий ответ:

Имена параметров в определении маршрута и действиях не совпадают, что вызывает проблемы.

[Route("{id}/users/search/{search}")] 
public HttpResponseMessage Search(int id, string text) 

Вы должны обновить параметр string в своем действии с text на search, чтобы соответствовать имени параметра в атрибуте Route.

+0

проблема не в самой услуге. это прекрасно работает. данный выше маршрут, как вы называете эту службу с привязкой {search} к пустой строке, является вопросом! – Mantzas

+0

Я попробую, но я думаю, что я уже не повезло. Тем не менее я не знаю, как вызвать службу, чтобы получить этот результат. Любое понимание того, как вы это делаете, так как ваш, похоже, работает? – Mantzas

+0

У вас должен быть доступ к этому маршруту, позвонив по телефону GET http: // website/1234/users/search или GET http: // website/1234/users/search/firstname% 20lastname – MattHughesATL

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