2

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

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

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 状态代码非常重要。一个简单的例子是 404。比如说你正在做Company.find(params[:id]它会抛出一个 ActiveRecord::RecordNotFound 并且这可以在应用程序控制器中一直被捕获:rescue_from ActiveRecord::RecordNotFound, :with => :not_found

例如,对于您必须处理的数据也是如此,如果格式(例如,您接收的是 'application/xml' 而不是 'application/json.')不是您所接受的,您可以抛出
406。

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

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

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

希望这可以帮助。

于 2013-02-12T22:36:05.937 回答