2016-06-22 2 views
0

Я строю RESTful веб-сервиса:Как передать аргументы фильтра для запросов GET в API REST?

  • Под GET /clients, я получаю список всех известных клиентов.
  • Под GET /clients/1, я получаю объект клиента для clientId 1.

Все, как это должно быть.

Эти клиенты имеют свойство под названием authorized. В моем веб-интерфейсе, чтобы управлять ими, я разделил таблицы для авторизованных и неавторизованных клиентов. Конечно, я не хочу загружать всех клиентов с сервера, чтобы отображать несанкционированные.

Вопрос в том, как я могу отфильтровать клиента по URL RESTful? Поскольку я хочу сделать правильный RESTful API, параметры запроса не являются опцией.

Я уже думал о дополнительно GET /unauthorizedClients и GET /authorizedClients, но это кажется неправильным, поскольку я все равно буду использовать DELETE/clients /% clientId% `для удаления одного клиента.

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

ответ

0

Я бы пошел с /clients/unauthorized и /clients/authorized. Вам нужны taylor URI ресурсов, например каталоги.

Таким образом, нет ничего плохого в удалении клиентов с ресурсом /client/[id].

+0

Да, это именно то, что искали. Спасибо! –

+0

@HerrDerb Нет проблем, пожалуйста! –

+0

@HerrDerb, если «клиенты» как «авторизованные», так и «несанкционированные» считаются единственным ресурсом с разным состоянием, этот ответ не имеет смысла. Намного лучше использовать параметры запроса. – Opal

1

Мне просто интересно, что мешает вам использовать параметры запроса. Они являются наиболее подходящим способом фильтрации коллекции ресурсов в REST API. Использование параметров запроса не сделает ваш API менееRESTful.

Вы могли бы иметь следующее:

  • Авторизованный: GET /clients?status=authorized
  • Несанкционированное: GET /clients?status=unauthorized

Другой вариант:

  • Авторизованный: GET /clients/authorized
  • Неавторизованный: GET /clients/unauthorized

Вы действительно должны учитывать параметры запроса.

+1

Да, +1 для параметров запроса! – Opal

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

  • Нет связанных вопросов^_^