解決済み

Rails4でJSONのParseErrorを判定

  • すぐに回答を!
  • 質問No.8232701
  • 閲覧数1565
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 42% (3/7)

Ruby on Rails 4 で Rest 形式で Web API の開発しています。
クライアントからくる Request の JSON に構文エラーがあるか判定したいのですが
構文エラーがあると
 ActionDispatch::ParamsParser::ParseError
上記のエラーが、コントローラに来る前に発生してしまうので、エラーの判定ができません。

どうすればプログラム上で上記のエラーが起こったか判定することができるでしょうか?

質問者が選んだベストアンサー

  • 回答No.2

ベストアンサー率 59% (147/246)

申し訳ありません。
#1は、呼び出し関係がわからなかったので、構文チェックをするメソッドを提供すればいかがでしょうか、という提案をさせていただいたものです。JSONファイルを指定する前に構文チェックをして、OKのものだけ指定する。ということをイメージしておりました。

(話変わりまして、)

以下のURLが該当しそうです。
https://gist.github.com/elarkin/4709748
お礼コメント
OkamotoT

お礼率 42% (3/7)

回答ありがとうございます。

ttp://stackoverflow.com/questions/15459143/how-to-rescue-from-actiondispatchparamsparserparseerror-in-rails-4
上記にも答えが書いてあったのですが、
Rack middleware の仕組みを理解していなかったので、
ソースをどこに配置すればいいかなど全然わからず苦労しましたが、
どうにか理解して配置し、rescue できるようになりました。

ありがとうございます。
投稿日時 - 2013-08-26 22:10:36

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 59% (147/246)

http://minamirb.github.io/rails_beginners_lesson/upgrading-from3.2-to4.0/

Rails 4.0 では、ParamsParser がリクエストパラメータのパースに失敗した場合に、ActionDispatch::ParamsParser::ParseError を継承した例外があがります。より下位の、例えば MultiJson::DecodeError の代わりに、この例外を rescue してもよいです。

だそうなので、以下のURLを参考にしてParseErrorもrescueする形にして、構文チェック用のメソッドを提供するのはどうでしょうか。

https://www.ruby-forum.com/topic/136579
補足コメント
OkamotoT

お礼率 42% (3/7)

回答ありがとうございます。

ですが、上記のURLを確認したのですが、
parse を明示的にやっているようですが、
どこに設定すればいいのでしょうか?
現状ではHTTP の通信が届くと、最初にURLのアクションに指定したコントローラの関数が実行されていますが、
コントローラより前に処理を実行するには、どこに記述すればよいのでしょうか?
投稿日時 - 2013-08-25 01:17:31
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

ピックアップ

ページ先頭へ