Проектирование веб-сервиса с использованием Ruby on Rails — сопоставление моделей ActiveRecord

Я собрал приложение RoR и теперь хотел бы опубликовать веб-службу RESTful для взаимодействия с моим приложением.

Я не уверен, куда именно идти, я не хочу просто раскрывать свои модели ActiveRecord, поскольку в каждой модели есть некоторые данные, которые не нужны или не должны предоставляться через API, подобный этому. Я также не хочу создавать решение SOAP.

Мое приложение создано с использованием Rails 2.3.5, и я надеюсь перейти на Rails 3.0 вскоре после его выпуска.

В основном я ищу способ сопоставить мои модели ActiveRecord с «моделями», которые будут отображаться через веб-службу. Правильно ли использовать ActiveResource? А как насчет ActionWebService?


person Michael DeLorenzo    schedule 25.05.2010    source источник


Ответы (1)


Вы можете сделать это через контроллер (или контроллеры). Ваши действия контроллера RESTful могут определять API для входящих запросов веб-службы, и вы можете отображать XML или JSON в ответе вместо представления HTML.

Я уверен, что есть более сложные способы сделать это, но это простой подход.

person Greg    schedule 25.05.2010
comment
Не то чтобы вы также могли переопределить #as_json в своих моделях, чтобы решить, какие значения вы будете отображать, и преобразования, которые вы хотите применить. См. stackoverflow.com/questions/2572284/ для получения подробной информации об использовании #as_json и #to_json. - person François Beausoleil; 25.05.2010
comment
Считается ли лучше переопределить методы to_json и to_xml для каждой модели? Я думаю, что я пытаюсь добиться чего-то, что будет поддерживаться в долгосрочной перспективе, не искажая мои модели. - person Michael DeLorenzo; 25.05.2010