5

在葡萄中如果你使用错误!方法它会抛出一个错误并且永远不会调用 Grape::Endpoint "after" 回调。

我希望应用程序在出错时调用后挂钩!已被调用。

我添加了这个中间件来实现这一点。

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

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

谢谢

4

1 回答 1

0

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

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

  # your api code...
end

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

于 2017-06-27T08:51:44.780 回答