Я пытаюсь создать 2 документа для своего API. У меня есть 2 пространства имен в маршрутах, и мне нужно создать 2 документа для моего первого пространства имен и второго пространства имен. В тестовом запросе они разделены на 2 папки. Как я могу автоматически сгенерировать эти 2 документа и что мне нужно написать в файле маршрутов?
В маршрутах я написал 2 монтирования для движка rswag, но я не знаю, что мне нужно сделать с моим файлом swagger.yml
🤔 А знаете ли вы, что...
Этот фреймворк позволяет легко масштабировать приложения с ростом нагрузки и объема данных.
Через некоторое время мне это удалось примерно так:
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 документа.