タグ

rubyとエラー処理に関するsnjxのブックマーク (2)

  • Railsでrescue_fromを使ってエラー処理を共通化する

    Railsのコントローラクラスのrescue_fromメソッドは、例外が発生した場合に実行するメソッドを指定できます。 コントローラーで独自のエラページをエラー内容によって切り替えたり、 APIでエラーが発生した場合に処理を共通化する場合などrescue_fromメソッドを使うとスッキリします。 ということで、APIのエラー処理の共通化を考えてみます。 各APIコントローラーのスーパークラス 各APIコントローラのスーパークラスを作成し、サブクラスで発生した例外は全てここでハンドリングします。 Api::TuleApiErrorが発生した場合、Api::ApiControllerのtule_api_errorメソッドが実行されます。 下記の例ではトークンが不正な場合は、HTTPステータスを401 Unauthorized、それ以外の場合は200 OKを返しています。 HTTPステータスは、

  • RailsのAPIサーバーのエラーレスポンスで例外に対応するエラーコードを返却する - Timee Product Team Blog

    はじめましてこんにちは。 夏が気を出してきて最近麺類しか口にしていないサーバサイドエンジニアのかしまです。 この度APIにてHTTP Status Codeとは別に、例外に対応するエラーコードを返すよう奮闘したのでその知見を共有したいと思います。 やりたいこと APIにて例外が発生した場合、以下の形式でレスポンスを返すようにします。 { "errors": [ { "code": "code1", "message": "message1", }, { "code": "code2", "message": "message2", }, ] } Why? 今回追加したAPIは外部のアプリケーションとの連携に使うため、以下の要件を満たす必要がありました。 クライアントサイドがハンドリングしやすいような設計にする エラーの識別子は不変であること そのためエラーメッセージとは別に、コードを返す

    RailsのAPIサーバーのエラーレスポンスで例外に対応するエラーコードを返却する - Timee Product Team Blog
  • 1