RESTful сервисные операции для запроса данных - PullRequest
1 голос
/ 12 мая 2009

При определении сервиса RESTful, ориентированного на ресурсы, считаете ли вы хорошей идеей определить явную операцию (глагол) для запроса данных?

Кажется очевидным и простым сопоставление операций CRUD на ресурсно-ориентированной службе RESTful, используя HTTP, с такими операциями, как PUT, GET, POST & DELETE, но как должны отображаться операции, которые запрашивают несколько ресурсов - с помощью новой операции, называемой QUERY 'или все еще использовать' GET ', который возвращает коллекцию ресурсов.

Мне интересны мнения и опыт людей ...

Ответы [ 3 ]

7 голосов
/ 12 мая 2009

REST о ресурсах. Какой ресурс вернет ваш запрос? Набор данных? Как определяется этот набор? Как это параметризовано? Это должно определить URL, который вы будете использовать с операцией GET:

GET /customers  would retrieve all customers
GET /customers?q=<query> would retrieve all customers matching the query

РЕДАКТИРОВАТЬ: следующее не совсем так ясно для меня

Думая о запросе как о поиске ресурса, который представляет собой набор клиентов (например), я начал задумываться о четко определенных подмножествах набора всех клиентов. Рассмотрим такие вещи, как:

GET /customers/state/MA              Retrieve all customers in Massachusetts
GET /customers/country/UK            All in the UK
GET /customers/country/UK/postalcode/001-234    All in that postal code in the UK

Подобные ресурсы имеют для меня смысл как четко определенные ресурсы, а не как запросы. Я бы продолжал использовать строку запроса для получения произвольного набора клиентов, но там, где существует естественное разделение клиентов, я мог бы указать это в пространстве URL.

Напомним, что операция GET предназначена для идемпотентных операций и предназначена для ускорения кэширования. Ответ на эти запросы должен позволять некоторое разумное количество кэширования (возможно, один день). Это позволит клиентскому компьютеру или прокси-серверу кэшировать набор результатов в течение некоторого периода времени, сохраняя повторные обращения к серверу.

0 голосов
/ 21 июля 2009

Возвращает список соответствующих URI ресурсов в качестве ответа.

0 голосов
/ 12 мая 2009

Я бы все равно использовал GET и предоставлял параметры запроса в URL.

...