Rails: Как мне сохранить сложное приложение RESTful? - PullRequest
1 голос
/ 10 мая 2009

Я всегда стараюсь сделать свои приложения как можно более RESTful, но недавно я начал работать над сложным проектом, требующим нескольких дополнительных методов в моем контроллере.

Обычно я достигаю этого, добавляя еще один: коллекция к маршруту, но это выглядит как обходной путь, и в сценарии у меня есть 5.

Есть ли лучшие практики для обработки дополнительных методов в контроллере? Обычно это простые формы, которые обновляют модель.

Ответы [ 4 ]

6 голосов
/ 10 мая 2009

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

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

3 голосов
/ 10 мая 2009

Я думаю, что в сообществе Rails есть некоторая путаница относительно того, как и где использовать слово "RESTful". Строго говоря, единственной вещью, которая может быть RESTful, является ваш веб-API (как уже упоминалось в railsninja). Что код приложения, соответствующего соглашениям REST (приложение с REST API), обычно может быть организован в набор контроллеров (которые соответствуют ресурсам) и методы в этих контроллерах (которые соответствуют четырем глаголам протокола HTTP) не что иное, как намек на то, как сохранить ваше приложение в чистоте и порядке.

Если мы хотим поговорить о приложении RESTful Rails, мы не можем просто говорить о контроллерах RESTful - нет ничего RESTful только в самих контроллерах. Возможно иметь сложное веб-приложение только с одним контроллером (и множеством методов), которое представляет множество ресурсов и идеально подходит для RESTful.

Тем не менее, вполне нормально добавлять дополнительные методы в ваш контроллер. Иногда полезно извлечь некоторые из этих дополнительных методов и создать совершенно новый контроллер - делайте это в любое время, когда вам это нравится (практическое правило: создайте новый контроллер в любое время, когда вы сможете идентифицировать его с каким-то самодостаточным ресурсом т.е. ресурс, который мог бы существовать сам по себе). Хотя иногда было бы глупо извлечь какой-то ресурс на другой контроллер. Допустим, у вас есть ресурс с атрибутом статуса. Имеет смысл воспринимать этот атрибут статуса как ресурс сам по себе и выполнять по крайней мере одно действие над ним (обновление), но извлекать его на другой контроллер не имеет смысла.

1 голос
/ 10 мая 2009

"Обычно я достигаю этого, добавляя еще один: коллекция к маршруту, но это похоже на обходной путь, и в сценарии у меня есть 5."

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

1 голос
/ 10 мая 2009

Существует Railscast по этому вопросу , добавляющий настраиваемые действия в другой контроллер RESTful.

Edit: я вижу, что вы упомянули метод в Railscast как обходной путь. :-) Я считаю, что единственный другой «чистый» способ справиться с этим - добавить дополнительные контроллеры, необходимые для поддержки необходимых вам действий.

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