2015-06-16 2 views
0

Привет Я работаю над проектом rails прямо сейчас с помощью 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

EDITED

Это в базе/корень для винограда

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

    mount API::V1::Base 
    end 

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

  1. винограда автоматически использовать это при отправке недостающий параметр на в API, который вы кладете параметр, как requires
  2. Когда вы явно вызвать error!() как это https://github.com/intridea/grape#raising-exceptions

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

Thanks

ответ

3

Код состояния встроен в стойку.
Вы можете приобрести его с помощью:

env['api.endpoint'].status

Так тело вашего метода будет:

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

Спасибо за ответ ... – kilua