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