Как назвать ресурсы RESTFUL в этом случае - PullRequest
2 голосов
/ 20 марта 2012

Я занимаюсь разработкой сайта для петиций, в котором используются методы RESTFul.

Например: / petition / 1 идентифицирует определенный петитон (ресурс).

Как следует назвать

а) Подписание петиции?

/ петиция / подпись / 1 или / петиция / 1 / подпись или ???

б) Поиск петиции на основе терминов (богатая, дляпример)

/ petition / search / rich / petition? search = rich

И наконец

c) Просмотр только определенной категории

/ petition /Категория / 1 / петиция? Категория = 1

Спасибо.

Ответы [ 2 ]

4 голосов
/ 20 марта 2012

Как отметил @BrianDriscoll в своем комментарии, при создании URL-адресов для ресурсов в архитектуре REST необходимо соблюдать осторожность, чтобы URL-адреса были просто существительными ( вещи в вашем приложении), а глаголы - это методы HTTP.

Теперь, когда это немного не так, мы можем начать копаться в том, какие существительные в вашем приложении действительно существуют. Судя по всему, у вас есть по сути 3 «вещи» (или существительных ) в вашем домене:

  1. обращениях
  2. Подписи под петицией
  3. Категории петиций

Предполагая, что подпись петиции может быть применена только к одной петиции, я ожидаю, что следующие шаблоны URL будут представлять ваши ресурсы:

  • /petitions - Список всех петиций (корень петиции)
  • /petitions/5 - Одна петиция
  • /petitions/5/signatures - Список всех подписей под одной петицией
  • /petitions/5/signatures/7 - единственная подпись под одной петицией
  • /categories - Список всех категорий (корень категории)
  • /categories/3 - отдельная категория (которая, вероятно, представляет собой список всех петиций в категории)

Затем с этими ресурсами вы можете использовать HTTP-глаголы для управления ресурсами:

  • POST /petitions - Создать новую петицию
  • POST /petitions/9/signatures - Создать новую подпись под петицией

И наконец, для поиска вы просто передаете строку запроса на ваш /petititions URL-адрес следующим образом:

GET /petitions?query=blah

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

Этого должно быть достаточно, чтобы начать работу. В конечном счете, все сводится к тому, чтобы решить, какие «вещи» и представления этих вещей нужны вашему приложению, а затем URL-адреса - это просто «имена» этих вещей, так же, как адрес - это «имя» дома. Взаимодействие с этими ресурсами (вещами) осуществляется с помощью различных HTTP-глаголов.

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

1 голос
/ 20 марта 2012

Я бы сделал

  • POST to / петиции / 1 / подписи
  • GET to / petitions? Query = rich
  • GET to / Categories / 1 / петиции (при условии, что вы хотите список петиций в категории)

Для рельсовых маршрутов это будет:

resources :categories do
  resources :petitions
end

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