В настоящее время я делаю следующее, но мне кажется, что это "грязно":
module Sinatra
module DynFormat
def dform(data,ct)
if ct == 'xml';return data.to_xml;end
if ct == 'json';return data.to_json;end
end
end
helpers DynFormat
end
Моя цель - планировать заранее.Сейчас мы работаем только с XML для этого конкретного веб-сервиса, но мы хотим перейти на JSON, как только все компоненты нашего стека его поддержат.
Вот пример маршрута:
get '/api/people/named/:name/:format' do
format = params[:format]
h = {'xml' => 'text/xml','json' => 'application/json'}
content_type h[format], :charset => 'utf-8'
person = params[:name]
salesperson = Salespeople.find(:all, :conditions => ['name LIKE ?', "%#{person}%"])
"#{dform(salesperson,format)}"
end
Такое ощущение, что я делаю это не лучшим образом.