在我的Rails 5.2应用程序中,app/middleware
文件夹中有以下中间件:
class CatchJsonParseErrors
def initialize(app)
@app = app
end
def call(env)
begin
@app.call(env)
rescue ActionDispatch::Http::Parameters::ParseError => error
raise error unless env['HTTP_ACCEPT']&.match(/application\/json/)
error_output = "There was a problem in the JSON you submitted: #{error}"
return [
400, { "Content-Type" => "application/json" },
[{ status: 400, error: error_output }.to_json]
]
end
end
end
在我的application.rb
文件中,以下行:
config.middleware.insert_before(ActionDispatch::Http::Parameters, "CatchJsonParseErrors")
当我尝试启动我的应用程序时,它返回以下错误:
`assert_index': No such middleware to insert before: ActionDispatch::Http::Parameters (RuntimeError)
我该如何解决?
答案 0 :(得分:0)
我真的没看到official Rails Guide或GitHub rails
repo上的ActionDispatch::Http::Parameters
中间件。有一个模块ActionDispatch::Http::Parameters
,它仅包含在ActionDispatch::Request
类中。我猜到Rails(ActionDispatch
)请求对象已经准备就绪,您就可以自由验证/调整它的参数了,好像这个地方就在ActionDispatch::RequestId
中间件之后。