Пользовательская ошибка винограда с кодом состояния

Привет, я сейчас работаю над проектом rails с Grape. По сути, я хочу сделать пользовательскую ошибку с Grape, поскольку она поддерживается. Мне удалось создать пользовательскую ошибку, что-то вроде этого

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

ОТРЕДАКТИРОВАНО

Это в основе / корне для винограда

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

    mount API::V1::Base
  end

Так что это означает, что теперь я использую пользовательскую ошибку вместо предопределенной ошибки винограда. Насколько я знаю, эта пользовательская ошибка будет вызываться двумя способами:

  1. Grape автоматически использует это, когда вы отправляете отсутствующий параметр в API, который вы помещаете в качестве параметра как requires
  2. Когда вы явно вызываете метод error!() следующим образом: исключения

Любая помощь?

Спасибо


person kilua    schedule 16.06.2015    source источник


Ответы (1)


Код состояния встроен в среду стойки.
Его можно получить с помощью:

env['api.endpoint'].status

Таким образом, тело вашего метода будет:

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