如何解决如何用rswag添加Swagger show action?
我试图在我的api文档的RoR应用程序中使用rswag gem创建一个show action。运行rake rswag:specs:swaggerize
后,我无法动态执行文档。我的问题是,由于无法获得模型对象的id
或我的模型对象slug
,因此无法仅通过进入文档来输入它。这是github文档中的示例。
path '/blogs/{id}' do
get 'Retrieves a blog' do
tags 'Blogs'
produces 'application/json','application/xml'
parameter name: :id,in: :path,type: :string
response '200','blog found' do
schema type: :object,properties: {
id: { type: :integer },title: { type: :string },content: { type: :string }
},required: [ 'id','title','content' ]
let(:id) { Blog.create(title: 'foo',content: 'bar').id }
run_test!
end
上面的示例很简单,我们正在创建一个Blog
实例,并将该ID传递到参数路径中。但是,当我看到生成的html并尝试为我的案例传递id / slug时,总是会收到404错误,因为它找不到ID。
下面是我昂首阔步的文档的图片。
如您在图片中看到的,我无法输入有效的子弹,因为我不知道。为了使它工作,我需要事先了解url塞。所以我的问题是我该如何解决。最后,这是我的代码,其中包含索引动作和显示动作。顺便说一句,我的api不支持后期创建操作。
describe 'Companies API' do
path '/api/v1/ipo-index' do
get 'Retrieves an index of ipo company listings' do
tags 'Companies'
consumes 'application/json'
produces 'application/json'
response '200','ok' do
let(:companies) do
3.times do
create(:company)
end
end
run_test!
end
end
end
path '/api/v1/ipo/companies/{slug}' do
get 'Retrieves a specific company listing' do
tags 'Companies'
consumes 'application/json'
produces 'application/json'
parameter name: :slug,type: :string,description: 'Company url slug'
let(:company) do
create(:company)
end
response '200','Company found' do
let(:slug) { company.slug } #### What is the slug?
run_test!
end
response '404','Record not found' do
let(:slug) { 'invalid-slug' }
run_test!
end
end
end
end
我是草率的文档专家,所以对您的帮助将不胜感激。谢谢。
解决方法
Swagger 的 try it out
功能向您在 swagger_helper
中声明的服务器发出真实请求。它必须知道 slug 名称才能发出正确的请求,并且必须是声明的服务器数据库中存在的记录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。