如何停止返回异常HTML

时间:2018-08-02 07:54:49

标签: ruby-on-rails

我正在通过从测试应用程序向开发服务器发送请求来测试仅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响应?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

application_controller.rb或相关的控制器文件中,编写如下内容:

rescue_from WhatEverExceptionClassToBeCaught do |e|
  render json: some_json_expression
end