【发布时间】:2014-12-23 16:03:51
【问题描述】:
我正在创建一个 API,它使用 JSON 与外部视图应用程序 (Angular) 来回通信。在很多 API 操作中,我返回的 JSON 响应与下面的错误 99% 相同:
# controller
def create
@record = Record.new(record_params)
if @record.save
@record
else
render json: {
error: {
type: "invalid_request",
message: "Could not create record. Params: #{record_params}",
errors: @record.errors.messages
}
}, status: 404
end
end
有没有方便的方法来干燥它?我特别问是因为我知道某些方法(例如 render)仅适用于控制器类,因为它们是继承的。
我正在考虑类似以下的事情:
render json: API::ErrorObject.call(@record, record_params), status: 404
在那个类中它会是:
class API::ErrorObject
self.call(object, params)
{
error: {
type: "invalid_request",
message: "Could not create record. Params: #{record_params}",
errors: object.errors.messages
}
}
end
end
我认为这可行,但有没有更简洁的方法来抽象出一些这种行为? API 相当大,因此有 30 多个地方可以存放非常相似的代码。我知道总有一天有人会请求对 API 响应进行补充,而有一个地方来更新这将比 30 好得多...
【问题讨论】:
标签: json api ruby-on-rails-4 response