У меня есть контроллер, занимающийся отправкой SMS-сообщений, и он настроен как ресурс по умолчанию. Теперь бизнес-требования изменились, и мы хотим, чтобы предложить пользователю три различных способа отправки сообщения:Как сделать эту концепцию RESTful?
- Для всех в их списке контактов
- Для сегментированной части их списка контактов (предопределенные)
- К индивидуальным контактам, которые они могут выбрать
Кроме того, есть два способа отправить SMS-сообщение: Premium (через sms-шлюз) или стандартный (через SMTP). Таким образом, существует по существу шесть разных способов отправки сообщения (три для премиум-класса, три для стандартных).
Требования утверждают, что эти три варианта выше необходимости быть представлены в формате «мастер-подобный», как три радио выбора кнопки, а затем кнопку, которая отображает соответствующую форму и список представить:
- If вариант 1 (отправить всем), то просто отобразите текстовое поле для отправки SMS
- Если опция 2 (отправить сегменту), то отобразите список сегментов в качестве радиокномов
- Если опция 3 (отправить по электронной почте), то отобразите список с возможностью поиска/сортировки всех контактов с флажками рядом с их именами и на отправке выберите все, отправлять.
Проблема, с которой я сталкиваюсь, заключается в том, как сделать это подходящим соглашениям RESTful, наложенным ресурсом. Каждый из этих случаев использования является технически только одним действием (ну, два, поскольку он будет соответствовать новому/создавать), но похоже, что в действии должно быть слишком много логики в действии, а также довольно беспорядочно (оператор switch или аналогичный).
Есть ли лучший способ сделать это?
Можете ли вы описать интерфейс на ресурсе контроллера, который отправляет сообщения? Какие данные он принимает? Не зная этого, все, что мы можем сделать, это дать вам теорию. :) – delfuego
Для премиум-класса он получает номер мобильного телефона и сообщение и отправляет его на веб-службу PHP, которая, в свою очередь, вызывает внешнюю веб-службу (были проблемы с заголовком SOAP, вызывающие внешнюю службу непосредственно из Ruby). Для SMTP он принимает номер мобильного телефона, вызывает веб-службу PHP (которая снова вызывает внешнюю службу) для получения носителя, а затем использует плагин SMSFu. Код прямо сейчас был сделан офшорным программистом и очень грязный, с несколькими большими операциями if, которые делают практически то же самое. –