que je fais actuellement ce qui suit, mais il se sent « kludgy »:Quelle est la meilleure façon de gérer content_type dynamique Sinatra
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
Mon but est de planifier à l'avance. Actuellement, nous ne travaillons qu'avec XML pour ce service Web particulier, mais nous voulons passer à JSON dès que tous les composants de notre pile le supportent.
Voici un exemple de route:
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
On se sent comme si je ne le fais pas la meilleure façon possible.
C'est exactement ce que je cherchais. Je n'étais pas au courant que les params étaient mis à la disposition des assistants. Je suis encore nouveau à Sinatra à cet égard. Je n'ai toujours pas envie d'appeler l'assistant à chaque fois, mais cela va réduire un peu la répétition. Je pense que j'ai une idée pour appliquer automatiquement l'aide maintenant grâce à vous. Je vais tenter le coup. – lusis