状态代码为

时间:2015-06-16 11:42:59

标签: ruby-on-rails grape grape-api

您好我正在与Grape合作开发rails项目 基本上我想用葡萄做出自定义错误,因为它支持。 我设法创建了自定义错误,就像这样

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

它工作正常,但如果我想在其上添加更多详细信息,例如我们发送的状态代码/我们手动传递方法error!,那么它将在json上显示状态代码。

它可能是这样的

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

如何设置 status_code_here

的值

EDITED

这是葡萄的基础/根

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

    mount API::V1::Base
  end

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

  1. 当您发送缺少的参数时,Grape会自动使用此功能 您将参数设置为requires
  2. 的API
  3. 当您明确地将error!()方法称为此https://github.com/intridea/grape#raising-exceptions
  4. 任何帮助?

    由于

1 个答案:

答案 0 :(得分:3)

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

env['api.endpoint'].status

所以你方法的主体就是:

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