重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

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

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

A 回答 (2件)

申し訳ありません。


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

(話変わりまして、)

以下のURLが該当しそうです。
https://gist.github.com/elarkin/4709748
    • good
    • 0
この回答へのお礼

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

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

ありがとうございます。

お礼日時:2013/08/26 22:10

http://minamirb.github.io/rails_beginners_lesson …

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

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

https://www.ruby-forum.com/topic/136579

この回答への補足

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

ですが、上記のURLを確認したのですが、
parse を明示的にやっているようですが、
どこに設定すればいいのでしょうか?
現状ではHTTP の通信が届くと、最初にURLのアクションに指定したコントローラの関数が実行されていますが、
コントローラより前に処理を実行するには、どこに記述すればよいのでしょうか?

補足日時:2013/08/25 01:17
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!