Несколько док-станций в одном проекте с рельсами rswag

Я пытаюсь создать 2 документа для своего API. У меня есть 2 пространства имен в маршрутах, и мне нужно создать 2 документа для моего первого пространства имен и второго пространства имен. В тестовом запросе они разделены на 2 папки. Как я могу автоматически сгенерировать эти 2 документа и что мне нужно написать в файле маршрутов?

В маршрутах я написал 2 монтирования для движка rswag, но я не знаю, что мне нужно сделать с моим файлом swagger.yml

🤔 А знаете ли вы, что...
Этот фреймворк позволяет легко масштабировать приложения с ростом нагрузки и объема данных.


88
1

Ответ:

Решено

Через некоторое время мне это удалось примерно так:

swagger_helper.rb:

docs = { 'v1/robots_api.yaml' => {
openapi: '3.0.1',
info: {
  title: 'API V1',
  version: 'v1'
},
paths: {},
components: {
  securitySchemes: {
    Bearer: {
      description: 'JWT key necessary to use API calls',
      type: :apiKey,
      name: 'Authorization',
      in: :header
    }
  }
},
servers: [
  {
    url: ENV.fetch('ROUTES_HOST'),
    variables: {
      defaultHost: {
        default: ENV.fetch('ROUTES_HOST')
      }
    }
  }
]

} }

if Rails.env.development?
  docs.merge!({ 'v1/swagger.yaml' => {
              openapi: '3.0.1',
              info: {
                title: 'API V1',
                version: 'v1'
              },
              paths: {},
              components: {
                securitySchemes: {
                  Bearer: {
                    description: 'JWT key necessary to use API calls',
                    type: :apiKey,
                    name: 'Authorization',
                    in: :header
                  }
                }
              },
              servers: [
                {
                  url: ENV.fetch('ROUTES_HOST'),
                  variables: {
                    defaultHost: {
                      default: ENV.fetch('ROUTES_HOST')
                    }
                  }
                }
              ]
            } })
end

config.swagger_docs = docs

config/initialaziers/rswag_ui.rb

Rswag::Ui.configure do |c|
  c.swagger_endpoint '/api-docs/v1/swagger.yaml', 'API V1 Docs' if Rails.env.development?
  c.swagger_endpoint '/<api_name>/api-docs/v1/<my_second_doc>.yaml', 'API V1 Docs <my api>'
end

И тогда я использую rake rswag, он генерирует для меня 2 документа.