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

时间:2014-07-30 22:41:13

标签: 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

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

由于

1 个答案:

答案 0 :(得分:0)

只需在Grape :: Middleware :: Error

之前插入中间件
class YourApi < Grape::API
  insert_before Grape::Middleware, AfterFailure

  # your api code...
end

然后您可以从@app_response

获取错误响应