带有状态代码的葡萄自定义错误

Grape custom error with status code

您好,我现在正在与 Grape 合作 rails 项目 基本上我想用葡萄做一个自定义错误,因为它受支持。 我设法创建了自定义错误,类似这样

module API
  module ErrorFormatter
    def self.call(message, backtrace, options, env)
      { :response_type => 'error', :details => message }.to_json
    end
  end
end

它工作正常,但是如果我想在它上面添加更多详细信息怎么办,比如我们葡萄 send/we 手动传递方法 error! 的状态代码,这样它就会有状态代码json.

可能是这样的

{ :status_code: *status_code_here*, :response_type => 'error', :details => message }

如何设置 status_code_here

的值

已编辑

这在 base/root 中用于葡萄

  class Base < Grape::API
    format :json
    error_formatter :json, API::ErrorFormatter

    mount API::V1::Base
  end

所以这意味着现在我正在使用自定义错误而不是葡萄的预定义错误。 据我所知,此自定义错误将以两种方式调用:

  1. 当你发送一个丢失的参数时,Grape 会自动使用这个 API 您将参数设置为 requires
  2. 当您显式调用 error!() 方法时 https://github.com/intridea/grape#raising-exceptions

有什么帮助吗?

谢谢

状态代码嵌入在机架环境中。
您可以通过以下方式获取:

env['api.endpoint'].status

所以你的方法的主体是:

{ :status_code: env['api.endpoint'].status, :response_type => 'error', :details => message }