我正在使用 Sinatra 和 DataMapper 开发一个 RESTful API。当我的模型验证失败时,我想返回 JSON 以指示哪些字段出错。DataMapper 为我的 type 模型添加了一个 'errors' 属性DataMapper::Validations::ValidationErrors
。我想返回这个属性的 JSON 表示。
这是一个单文件示例(一定要喜欢 Ruby/Sinatra/DataMapper!):
require 'sinatra'
require 'data_mapper'
require 'json'
class Person
include DataMapper::Resource
property :id, Serial
property :first_name, String, :required => true
property :middle_name, String
property :last_name, String, :required => true
end
DataMapper.setup :default, 'sqlite::memory:'
DataMapper.auto_migrate!
get '/person' do
person = Person.new :first_name => 'Dave'
if person.save
person.to_json
else
# person.errors - what to do with this?
{ :errors => [:last_name => ['Last name must not be blank']] }.to_json
end
end
Sinatra::Application.run!
在我的实际应用程序中,我正在处理 POST 或 PUT,但为了使问题易于重现,我使用 GET 以便您可以使用浏览器或浏览器。curl http://example.com:4567/person
所以,我所拥有的是person.errors
,我正在寻找的 JSON 输出就像哈希产生的一样:
{"errors":{"last_name":["Last name must not be blank"]}}
我需要做什么才能得到DataMapper::Validations::ValidationErrors
我想要的 JSON 格式?