2

RailsAPIアプリケーションで例外を管理する方法の一般的なポリシーを知りたいです。

顧客は、顧客の論理に関連する例外のみを受け取る必要があると思います。そのため、コントローラーでは、この種の例外をキャッチしてメッセージを送信しています。

MainApplicationException私のアプリケーションのすべての例外の最上位の例外クラスです。

class MyController < ApplicationController

  def some_action

    ... # processing of the request

    rescue MainApplicationException => error
      render: { :message => error.message }
    end
  end
end

ただし、着信要求の処理中に例外が発生する可能性は確かにあります。

この例外をどのように登録し、アプリケーションのどこでこれらの例外を救済する必要がありますか?これらのメッセージをログに記録する必要がありますか?この種の問題のチュートリアルはありますか?

4

1 に答える 1

2

例外処理が大変!一般に、特に API を構築するときは、HTTP ステータス コードをよく理解することが重要です。1 つの些細な例は 404 です。たとえば、これを実行してCompany.find(params[:id]いると、ActiveRecord::RecordNotFound がスローされ、これはアプリケーション コントローラーでずっとキャッチされる可能性があります。rescue_from ActiveRecord::RecordNotFound, :with => :not_found

たとえば、処理する必要があるデータについても同じことが言えます。たとえば、「application/json」ではなく「application/xml」を受信して​​いる場合など、フォーマットが受け入れられない場合は、
406 をスローできます。

最も難しい部分は明らかにユーザー データの処理です。ここで発生する重要な問題は、ユーザーにどの程度通知したいかということです。情報が多すぎると、システムが潜在的なハッキングにさらされる可能性があります。

個人的には、例外がコードの他の部分に影響を与えない場合、コントローラーは例外を処理するのに適していると思います。それ以外の場合は、コントローラーで実際にエラーを処理せずに応答を作成できるBuilder パターンを使用することをお勧めします。

例外処理に関する本はたくさんありますが、API エラーの処理とリソースのコレクションに関する簡単な紹介は、このブログ投稿かもしれません。

お役に立てれば。

于 2013-02-12T22:36:05.937 に答える