如何在Rails的rswag/swagger请求规范中指定DECIMAL和DATE格式


post('create user') do
tags 'Jobs'
consumes 'application/json'
parameter name: :user, in: :body, schema: {
type: :object,
properties: {
title: { type: :string },
description: { type: :string },
date: { type: :datetime  },
budget: { type: :decimal },
awarded: { type: :boolean }
},
required: [ 'title', 'description' ]
}
response(201, 'created') do
after do |example|
example.metadata[:response][:content] = {
'application/json' => {
example: JSON.parse(response.body, symbolize_names: true)
}
}
end
let(:user) { { title: 'foo', description: 'bar' } }
run_test!
end
end

我已经实现了上面的请求,但Swagger UI中的输出显示

Unknown type: datetime
Unknown type: decimal

Rails的rswag文档没有给出如何指定类型的列表——有什么想法吗?

您正在寻找的是swagger/openapi的一部分。检查数据类型文档;存在数量有限的数据类型。

你想要更接近这个的东西:

date: { type: :string, format: :datetime }
awarded: { type: :string, format: :decimal }

注意:小数不是"小数";真实的";format,但format是一个开放值,因此您可以使用所用工具支持的任何内容。您可以将format注释与pattern匹配一起使用,以确保它是十进制。

最新更新