Grâce à Middleware Rack et Rails 3, vous pouvez sortie assez JSON pour chaque demande, sans modification du contrôleur de votre application. J'ai écrit ces middleware extrait de code et j'obtiens bien imprimée JSON dans le navigateur et curl
de la production.
class PrettyJsonResponse
def initialize(app)
@app = app
end
def call(env)
status, headers, response = @app.call(env)
if headers["Content-Type"] =~ /^application\/json/
obj = JSON.parse(response.body)
pretty_str = JSON.pretty_unparse(obj)
response = [pretty_str]
headers["Content-Length"] = Rack::Utils.bytesize(pretty_str).to_s
end
[status, headers, response]
end
end
Le code ci-dessus doit être placé dans app/middleware/pretty_json_response.rb
de vos Rails de projet.
Et la dernière étape consiste à enregistrer le middleware en config/environments/development.rb
:
config.middleware.use PrettyJsonResponse
Je ne recommande pas de l'utiliser en production.rb
. Le JSON ré-peut dégrader les temps de réponse et le débit de production de votre application. Finalement, la logique supplémentaire tels que "X-Jolie-Json: true' en-tête peut être introduit pour déclencher la mise en forme manuelle curl demande sur demande.
(Testé avec des Rails 3.2.8-4.0.2, Ruby 1.9.3-2.1.0, Linux)