【发布时间】:2017-03-28 07:24:25
【问题描述】:
我正在构建一个 Rails 5 API 并尝试在找不到记录时处理错误响应(即 /v1/users/99 但该用户不存在)。
我正在使用 Active Model Serializer 进行序列化,并且我认为必须有一种方法只显示状态和错误,而不是堆栈跟踪。现在,我明白了:
{
status: 404,
error: "Not Found",
exception: "#<ActiveRecord::RecordNotFound: Couldn't find User with 'id'=99>",
traces: {
Application Trace: [
{
id: 1,
trace: "app/controllers/api/v1/users_controller.rb:45:in `set_user'"
}
],
Framework Trace: [
{
id: 0,
trace: "activerecord (5.0.2) lib/active_record/core.rb:173:in `find'"
},
{
id: 2,
trace: "activesupport (5.0.2) lib/active_support/callbacks.rb:382:in `block in make_lambda'"
},
{
id: 3,
trace: "activesupport (5.0.2) lib/active_support/callbacks.rb:150:in `block (2 levels) in halting_and_conditional'"
},
{
id: 4,
trace: "actionpack (5.0.2) lib/abstract_controller/callbacks.rb:12:in `block (2 levels) in <module:Callbacks>'"
},
{
id: 5,
trace: "activesupport (5.0.2) lib/active_support/callbacks.rb:151:in `block in halting_and_conditional'"
},
.
.
.
我希望 API 端的错误简单,只是状态和错误。如何做到这一点?
【问题讨论】:
标签: ruby-on-rails active-model-serializers rails-api