REST и фильтрация записей - PullRequest
0 голосов
/ 01 ноября 2011

В настоящее время у меня есть метод .NET, который выглядит следующим образом - GetUsers(Filter filter), и он вызывается из клиента путем отправки запроса SOAP. Как вы, вероятно, можете догадаться, он берет кучу фильтров и возвращает список пользователей, соответствующих этим фильтрам. Фильтры не слишком сложны, в основном это просто набор дат, дат, возраста, пола и т. Д., И набор фильтров, который у меня есть в любой момент, является статическим.

Мне было интересно, как ОТЛИЧНЫЙ способ сделать это. Я предполагаю, что у меня будет ресурс Users. Это будет что-то вроде GET /Users?fromDate=11-1-2011&toDate=11-2-2011&age=&sex=M? Есть ли способ передать его Filter без необходимости преобразования его в отдельные атрибуты?

Я использую эту услугу от мобильного клиента, поэтому я думаю, что дополнительные запросы, которые фактически создают фильтр: POST filters - это плохой UX. Даже если мы сделаем это, что будет означать POST filters? Это должно создать запись фильтра в базе данных? Как сервер будет отслеживать только что созданный фильтр, если моя последовательность запросов будет следующей?

POST /filters -- returns a filter
{
    "from-date" : "11-1-2011",
    "to-date" : "11-2-2011",
    "age" : "",
    "sex" : "M"
}


GET /Users?filter=filter_id

Извиняюсь, если запрос прозвучал как немного запутанный. Я

Спасибо,
Тея

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

Мы делаем это так же, как у вас это было GET / Users?* Я не вижу никаких проблем с этим

1 голос
/ 02 ноября 2011

То, как я это делаю, я делаю POST с телом, содержащим параметры, а затем возвращаю перенаправление в GET. Как выглядит URL GET, зависит только от сервера. Если вы хотите преобразовать фильтр в отдельные параметры запроса, вы можете это сделать, или если вы хотите сохранить фильтр, а затем добавить параметр запроса, который указывает на сохраненный фильтр, это тоже нормально. Преимущество состоит в том, что вы можете изменить свое решение в любое время, а клиенту все равно.

Кроме того, поскольку вы выполняете GET, вы можете воспользоваться кешированием, которое должно с лихвой компенсировать выполнение дополнительного квеста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...