如何在rails中为api定义自定义错误代码

时间:2018-05-09 11:58:28

标签: ruby-on-rails ruby exception error-code

我想在我的api响应中定义自定义错误代码,如

{ status: 401,message: "Authentication issue",code: 1000}

我想在我的应用程序中使用一些解释文档来定义这1000个代码。我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

首先,您需要定义自定义异常:

class API::Unauthorized < StandardError
  attr_reader :code

  def initialize(code)
    super
    @code = code
  end
end

然后在您的APIController中使用rescue_from,添加以下内容:

rescue_from StandardError, :with => :exception_handler

def exception_handler(exception)
  if exception.is_a? API::Unauthorized
    render json: { status: 401, message: "Authentication issue", code: exception.code }, status: unauthorized
  end
end

现在您可以根据您的实现抛出不同的异常代码:

raise API::Unauthorized.new(1000)