Dank Rack Middleware und Rails 3 können Sie für jede Anfrage hübsches JSON ausgeben, ohne einen Controller Ihrer Anwendung zu ändern. Ich habe ein solches Middleware-Snippet geschrieben und ich erhalte schön gedrucktes JSON im Browser und curl
Ausgabe.
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"] = pretty_str.bytesize.to_s
end
[status, headers, response]
end
end
Der obige Code sollte in app/middleware/pretty_json_response.rb
Ihres Rails-Projekts. Und der letzte Schritt ist die Registrierung der Middleware in config/environments/development.rb
:
config.middleware.use PrettyJsonResponse
Ich empfehle nicht, es zu verwenden in production.rb
. Das JSON-Reparsing kann die Reaktionszeit und den Durchsatz Ihrer Produktionsanwendung beeinträchtigen. Eventuell kann eine zusätzliche Logik wie der Header "X-Pretty-Json: true" eingeführt werden, um die Formatierung für manuelle Curl-Anfragen bei Bedarf auszulösen.
(Getestet mit Rails 3.2.8-5.0.0, Ruby 1.9.3-2.2.0, Linux)