葡萄:使用错误!和Grape ::回调后的中间件

jad*_*ent 5 grape-api

在Grape中如果使用错误!它将抛出一个错误,并且永远不会在"回调之后"调用Grape :: Endpoint.

我希望应用程序在出错时调用挂钩!被称为.

我添加了这块中间件来实现这一目标.

class AfterFailure <  Grape::Middleware::Base

  def call!(env)
    @env = env
    before

    error = catch (:error) do 
      @app_response = @app.call(@env)
      return after || @app_response
    end

    after_failure(error) || throw(:error, error)
  end

  def after_failure(error)
    puts "After Failure"

    nil
  end

end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来实现这一目标?

谢谢

Zha*_*ang 0

只需在 Grape::Middleware::Error 之前插入中间件

class YourApi < Grape::API
  insert_before Grape::Middleware, AfterFailure

  # your api code...
end
Run Code Online (Sandbox Code Playgroud)

然后你可以得到错误响应@app_response