我有一个包含JSON API接口的Rails应用程序。正确指定值后,控制器可以正常处理快乐路径,并将JSON呈现为输出。
但是,如果输入有问题,则会引发异常,并且会呈现rescues
中的某些模板。我真的只想沿{ "error": { "msg": "bad request", "params": ... } }
行和相应的HTTP状态代码返回JSON错误(例如,如果未经过身份验证,则返回403)。但我只希望这适用于针对example.com/api/...
中的任何内容的请求。
我该怎么做?
答案 0 :(得分:13)
我有一个类似的情况,但我单独救出了各个API方法,因为我需要特定于方法的错误,我也可以根据错误类型进行多次救援。
在我的应用程序控制器中,我有一个方法:
def error(status, code, message)
render :js => {:response_type => "ERROR", :response_code => code, :message => message}.to_json, :status => status
end
然后在我的API控制器中
def some_method
## do stuff
rescue
error(500, method_specific_error_code, "it all done broke")
## additional error notifications here if necessary.
end
因为我救了错误,我需要显式调用hoptoad api。
为了处理身份验证,我before_filter
login_required
def login_required
error(403, 403, "Not Authenticated") unless authenticated
end
拯救404错误:
def render_404
error(404, 404, "Unknown method")
end
我希望这有帮助!
答案 1 :(得分:4)
你的api控制器上around_filter
怎么样?像
around_filter :my_filter
private
def my_filter
begin
yield
rescue
render :js => ...
end
end
答案 2 :(得分:1)
def create
res=
RestClient::Request::Execute(params{},headers,success_url,
failure_url)
if res. response_type = 200
redirect_to success_url
else
redirect_to failure_url
end
end
如果有任何错误,它将被重定向到失败的URL,否则将成功的URL