Что делать, если я хочу реализовать сложный запрос в REST - PullRequest
6 голосов
/ 17 января 2010

Я хотел бы реализовать службу REST, которая может анализировать запросы, такие как извлечение пользователей, созданных после startdate и перед endate, и с привилегией admin. Похоже, что стандартная реализация REST может запрашивать только по идентификатору. Нужно ли самопределяемый протокол, чтобы сделать такой запрос возможным или какой-либо стандарт?

Спасибо!

Ответы [ 5 ]

3 голосов
/ 18 января 2010

В REST нет ограничений, согласно которым вы можете выполнять запросы только по идентификатору. Нет ничего плохого в том, чтобы использовать набор параметров запроса для получения набора пользователей, соответствующих этим критериям поиска.

1 голос
/ 19 января 2010

Взгляните на Протокол GDATA Google . Это очень RESTful , и у них есть очень хороший способ выполнять "сложные" запросы, сохраняя при этом чистый URI.

http://code.google.com/apis/gdata/docs/2.0/reference.html#Queries

Вот пример того, что их чистые URI запроса

http://example.com/jo/-/Fritz/2006

вместо

http://example.com/jo?category=Fritz&category=2006

От Google:

Этот подход идентифицирует ресурс без использования параметров запроса и создает более чистые URI. Мы выбрали этот подход для категорий, потому что мы думаем, что запросы по категориям будут наиболее распространенными запросами.

0 голосов
/ 17 мая 2012

Я использую семантику полевых поисков django в качестве руководства для сложных поисков. https://docs.djangoproject.com/en/dev/ref/models/querysets/#id4

Не стоит отвлекаться на тот факт, что он определен как API для конкретного языка, его легко перевести в параметры запроса html.

Примером будет http://example.com/Goods?category=fruit&size__lt=14

Чтобы получить результат select * from goods where category = 'fruit' and size < 14 в sql или /goods[@category='fruit' and @size < 14] в xpath, или как угодно.

0 голосов
/ 19 января 2010

У Райана Бейтса есть Railscast, где он показывает создание поиска в качестве ресурса. Концепция остается в силе, даже если вы не занимаетесь Rails.

http://railscasts.com/episodes/111-advanced-search-form

0 голосов
/ 17 января 2010

Насколько я могу судить - успокоительные вещи действительны для действий CRUD. Вы можете реализовать отдельный search метод / URL и передать ему столько параметров, сколько вам нужно. И если вы все еще пытаетесь придерживаться методологий REST - вам следует использовать тип запроса GET.

...