Я создаю веб-приложение с использованием Rails, и моим первым инстинктом было сделать все контроллеры RESTful. В частности, я использую метод PUT для любых действий, которые изменяют данные.
Но это, кажется, добавляет ненужную сложность для приложения на основе браузера, потому что Rails использует Javascript для переноса URL-адреса в запросе POST.
Во-вторых, это означает, что мне нужно указывать метод всякий раз, когда я создаю ссылку для (нестандартного) действия. Например, когда я добавил «дополнительное» действие в ThingController, мне нужно иметь :method => :put
in ...
link_to "Action", things_extra_url(thing), :method => :put
Наконец, кажется, не очень СУХОЕ создание этого отображения для дополнительного действия в rout.rb ...
map.resources :things, :member => { :extra =>:put }
Теперь я должен подумать об определении действия extra
в двух местах.
Является ли маршрутизация на основе ресурсов больше предназначенной для создания API-интерфейсов веб-служб, чем логики пользовательского интерфейса? Излишне ли использовать его при создании интерфейса пользователя?
В целом, я согласен с преимуществами, упомянутыми в этой теме - согласованность между контроллерами - это хорошо, а ограничения REST приводят к простым, более чистым конструкциям. Я немного волнуюсь, что принудить некоторые вещи в REST может быть неестественным.
Но я не столько спрашиваю о философии дизайна, сколько интересуюсь, что люди думают об этом компромиссе в Rails. Преимущества перевешивают дополнительную сложность?