Как предотвратить ошибку фильтрации запроса через Rack Middleware - PullRequest
0 голосов
/ 27 июня 2019

Привет, у меня проблема в моем текущем проекте, часто мы получаем сообщение об ошибке. Текущее приложение работает на Rails2.3.5 и Ruby 1.8.7

(ActionController :: MethodNotAllowed) "Разрешены только запросы get. "

Для этого я нашел несколько вариантов, таких как

  • , предотвращающих ошибку, блокирующую запросы не GET / POST / HEAD с помощью вашего веб-сервера
  • предотвратить ошибку фильтрации запроса через Rack Middleware

Поэтому хотелось бы узнать, как ее предотвратить с помощью Rack Middleware.

Пожалуйста, кто-нибудь предлагает / помогает мне избавиться отэта проблема.

TIA.

1 Ответ

0 голосов
/ 27 июня 2019

Вам потребуется создать собственное промежуточное программное обеспечение и вставить его до или после в соответствии с требованием в application.rb.

Мне нужно будет обработать ошибку синтаксического анализа json в одном из проектов, и я создал серединукак показано ниже:

class CatchJsonParseErrors
  def initialize(app)
    @app = app
  end

  def call(env)
    begin
      @app.call(env)
    rescue ActionDispatch::ParamsParser::ParseError => error
      if env['HTTP_ACCEPT'] =~ /application\/json/
        error_output = "There was a problem in the JSON: #{error}"
        return [
          400, { "Content-Type" => "application/json" },
          [ { status: 400, error: error_output }.to_json ]
        ]
      else
        raise error
      end
    end
  end
end

И добавлено ниже строки в файле application.rb:

config.middleware.insert_before ActionDispatch::ParamsParser, "CatchJsonParseErrors"
...