【问题标题】:Exception policy for Rails API applicationsRails API 应用程序的异常策略
【发布时间】:2013-01-28 05:01:05
【问题描述】:

我想知道如何在 Rails API 应用程序中管理异常的一般策略。

我认为客户应该只收到与客户逻辑相关的异常。所以在控制器中,我正在捕捉这些异常并发送它的消息。

MainApplicationException 是我的应用程序中所有异常的顶层异常类。

class MyController < ApplicationController

  def some_action

    ... # processing of the request

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

但可以肯定的是,在处理传入的请求时很有可能会引发异常。

我应该如何注册这些异常以及我应该在应用程序中的什么位置挽救这些异常?我应该把这些消息记录下来吗?这类问题有教程吗?

【问题讨论】:

    标签: ruby-on-rails exception policy


    【解决方案1】:

    异常处理很难!一般来说,尤其是在构建 API 时,掌握HTTP status codes 非常重要。一个简单的例子是 404。比如说你正在做Company.find(params[:id],它会抛出一个 ActiveRecord::RecordNotFound,这可以在应用程序控制器中一直被捕获:rescue_from ActiveRecord::RecordNotFound, :with =&gt; :not_found

    对于您必须处理的数据也是如此,如果格式(例如,您接收的是“应用程序/xml”而不是“应用程序/json。”)不是您可以接受的,您可以抛出一个
    406.

    最难的部分显然是处理用户数据,这里出现的一个重要问题是你想通知用户多少?过多的信息可能会使您的系统暴露在潜在的黑客攻击之下。

    我个人认为控制器是处理异常的好地方,只要它们不影响代码的任何其他部分。否则,一个不错的方法可能是 Builder pattern,它允许您在不实际处理控制器中的错误的情况下编写响应。

    有很多关于异常处理的书籍,但是关于处理 API 错误和资源集合的简单介绍可能是this blog post

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2021-12-09
      相关资源
      最近更新 更多