У нас есть смешанное приложение html и api. Мы решили разбить стандартную часть html на обычные контроллеры и поместить api в api_CONTROLLER_NAME. Итак, у нас есть items_controller.rb и api_items_controller.rb. Мы используем jquery для публикации обновлений и создания элементов. ОДНАКО, мы отправляем сообщения в одну конечную точку /api/items и основываясь на том, есть ли идентификатор в параметрах, определяют, должен ли быть создан новый элемент или элемент должен быть обновлен. Мне это очень неудобно, и мы думаем, что мы должны публиковать их для создания и обновления, но поскольку поддержка браузера - это некоторая проблема с точки зрения put и delete, аргумент заключается в том, что мы должны делать это таким образом.
Поэтому у меня есть два вопроса: (1) Разделение между двумя контроллерами плохой дизайн? Или мы должны пройти через один контроллер? Я лично считаю, что два контроллера в порядке. (2) Делает ли создание и обновление в одном методе ok или мы должны их разделить и, аргумент о поддержке браузера несколько фиктивный? Нам нужно только поддерживать IE8 и выше.
1) Я обычно кодирую свой api в своем собственном пространстве имен, потому что его логика отличается от логики ядра. Так что разные контроллеры звучат хорошо для меня
2) если вы требуете использовать REST, используйте REST. Так что разделить создание и обновление. Не беспокойтесь о браузере. FYI, Rails сам обманывает PUT со скрытым полем в формах (_method
)