微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何用rswag添加Swagger show action?

如何解决如何用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。

下面是我昂首阔步的文档的图片

enter image description here

如您在图片中看到的,我无法输入有效的子弹,因为我不知道。为了使它工作,我需要事先了解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 举报,一经查实,本站将立刻删除。