首页 > 解决方案 > 如何停止返回异常html

问题描述

我正在通过从测试应用程序向开发服务器发送请求来测试仅 Rails api 应用程序。有时,当我生成异常时,它会触发一个异常,该异常会返回一个提供异常详细信息的 html 页面。它的开头是这样的:

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Action Controller: Exception caught</title>
  <style>
    body {
      background-color: #FAFAFA;
      color: #333;
      margin: 0px;
    }

这个冗长的页面使得在查看测试应用程序时很难看到正在发生的事情。有什么方法可以让 api 应用程序在遇到异常时返回 json 响应?

标签: ruby-on-rails

解决方案


Rails 没有任何内置的 JSON 异常格式,但您可以使用它rescue_from来捕获异常并返回您选择的响应:

class ApplicationController < ActionController::API
  rescue_from RuntimeError do |ex|
    render json: { success: false, error: ex.class.name, message: ex.message }, status: 500
  end
end

推荐阅读