我有一个“软件即服务”应用程序,它使用JSON通过RESTful API进行通信。如何在基于JSON的RESTful代码中处理异常?
简单地说:在JSON数据交换中使用RESTful API时捕获和报告异常的最佳实践是什么?
我的第一个想法是通过生成一个脚手架来了解Rails的功能,但这显然是不正确的。下面是一个摘录:
class MumblesController < ApplicationController
# GET /mumbles/1
# GET /mumbles/1.json
def show
@mumble = Mumble.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @mumble }
end
end
end
在这种情况下,如果代码JSON发送一个不存在的ID,例如
http://www.myhost.com/mumbles/99999.json
然后Mumble.find()会引发ActiveRecord :: RecordNotFound。 ActionController将捕获并在HTML中呈现错误页面。但对于期待JSON的客户端而言,HTML是无用的。
我可以通过将Mumble.find()包装在begin ... rescue RuntimeError
块中并呈现JSON状态=>:unprocessable_entity或其他东西来解决该问题。
那么是什么,如果客户端的应用程序发送一个无效的路径,例如:
http://www.myhost.com/badtypo/1.json
是一个JSON基于应用程序应该赶上和JSON返回一个错误?如果是这样,我可以在没有深入研究ActionDispatch的情况下将其捕获到哪里?
因此,总体而言,如果出现错误,我是否会放下并让ActionController生成HTML?这感觉不对......
小心:至少在导轨4,在'rescue_from'匹配的顺序是颠倒*从*'定期rescue':如果你想为一个子类对不同的行为它的父类,把子类*放在父类后面: - /' – AlexChaffee 2016-07-12 15:38:04