RESTful маршруты в Rails для генерации отчетов - PullRequest
3 голосов
/ 22 февраля 2010

Я работаю с приложением Rails, которое использует RESTful-маршруты для обработки своих ресурсов. Сейчас я создаю контроллер отчетов, который будет генерировать отчеты в HTML, XML, CSV и т. Д. Для генерации будет доступно несколько различных отчетов в зависимости от параметров, отправляемых в контроллер.

Является ли излишним использование REST для этого контроллера отчетов, поскольку это не фактический ресурс, который будет сохранен и затем доступен для редактирования или удаления? Использование RESTful создаст множество маршрутов, которые мне никогда не понадобятся.

Было бы лучше определить собственный маршрут вместо того, чтобы идти по RESTful? Например, иметь в контроллере одно действие generate, которое генерирует отчет и выводит его в указанном формате?

map.connect 'reports', :controller => 'reports', :action => 'generate'

Ответы [ 3 ]

1 голос
/ 08 февраля 2012

Извините, воскрешая такой старый пост.

Согласно веб-службам RESTful вам не нужно указывать действия записи, поэтому ваш сервис можно считать RESTful.

Насколько я знаю, вам нужно спроектировать свой сервис с использованием ROA (ресурсно-ориентированной архитектуры) и все.

При этом @jdl ответ был правильным и ОТЛИЧНЫМ. :)

1 голос
/ 22 февраля 2010

Ваш путь в порядке, или, если вы предпочитаете придерживаться маршрутов RESTful, вы можете выбрать и выбрать те, которые вы хотите.

map.resources :reports, :only => [:show]
0 голосов
/ 23 февраля 2010

Я бы сделал это без RESTful. Нет необходимости быть RESTful. Даже ответ @jdl не является RESTful, поскольку содержит только одно действие show. В этом случае отчеты не являются ресурсами, которые можно создавать, редактировать или удалять. Я бы добавил этот вид маршрутов:

map.report 'reports/:id', :controller => 'reports', :action => 'generate'
map.report_with_format 'reports/:id.:format', :controller => 'reports', :action => 'generate'
map.reports 'reports', :controller => 'reports', :action => 'index'

Использование именованных маршрутов вместо connect даст вам несколько хороших помощников URL, таких как reports_path и т. Д.

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