Представление Sinatra и restapi

#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