#rest #sinatra #erb
#rest #sinatra #ошибка
Вопрос:
я новичок здесь, но не новичок в ruby.
У меня небольшой вопрос о sinatra. Если я хочу использовать функциональность rest api для генерации данных из источника (например, mysql). Как мне решить использовать ответ rest (только значения в json или что-то другое) или представление (html.erb)?
routes.rb
get '/api/movies/:id' do
movie ||= Movie.get(params[:id]) || halt(404)
format_response(movie, request.accept)
end
response_format.rb
def format_response(data, accept)
accept.each do |type|
return data.to_xml if type.downcase.eql? 'text/xml'
return data.to_json if type.downcase.eql? 'application/json'
return data.to_yaml if type.downcase.eql? 'text/x-yaml'
return data.to_csv if type.downcase.eql? 'text/csv'
return data.to_json
end
end
что-то вроде: (решайте в маршрутах)
get '/api/movies/:id' do
movie ||= Movie.get(params[:id]) || halt(404)
request.user_agent =~ /Mozilla/ ? format_response(movie, request.accept) : erb :view_movie
end
или как: (решите в помощнике)
def format_response(data, accept)
accept.each do |type|
return data.to_xml if type.downcase.eql? 'text/xml'
return data.to_json if type.downcase.eql? 'application/json'
return data.to_yaml if type.downcase.eql? 'text/x-yaml'
return data.to_csv if type.downcase.eql? 'text/csv'
erb :view_movie if type.downcase.eql? 'text/html'
end
end