Возможно ли в OpenRasta иметь шаблон Uri, который позволяет отправлять массив значений одного и того же ключа и сопоставлять его с методом-обработчиком, принимающим массив параметров запроса.
Пример: вернуть все контакты с именем Дейв Смит из коллекции.
HTTP GET / contacts? FilterBy = first & filterValue = Dave & filterBy = last & filterValue = Smith
С конфигурацией:
Какой синтаксис будет наилучшим для сопоставления с образцом строки Uri? (Предложения приветствуются)
ResourceSpace.Has.ResourcesOfType<List<ContactResource>>()
.AtUri("/contacts")
.And.AtUri("/contacts?filterBy[]={filterBy}[]&filterValue[]={fv}[]") // Option 1
.And.AtUri("/contacts?filterBy={filterBy}[]&fv={fv}[]") // Option 2
будет соответствовать методу обработчика:
public object Get(params Filter[] filters)
{
/*
create a Linq Expression based on the filters using dynamic linq
query the repository using the Linq
*/
return Query.All<Contact>().Where(c => c.First == "Dave" && c.Last == "Smith").ToResource()
}
, где Фильтр определяется как
public class Filter
{
public string FilterBy { get; set; }
public string FilterValue { get; set; }
}