Настройте с помощью Swagger UI и Swagger Editor, используя yaml, разделенный на несколько файлов - PullRequest
0 голосов
/ 02 апреля 2020

Я бы хотел использовать swagger для нашего проекта, который довольно большой. Документирование всего REST-API в одном файле yaml было бы слишком много, поэтому я хотел бы разбить его на несколько файлов yaml. Сначала я попытался использовать Swagger UI, просто скачав его индекс открытия. html. Это работает до тех пор, пока я не разделю yaml на несколько файлов, так как тогда я получил ошибки CORS. Чтобы обойти их, я просто развернул папку Swagger-UI, в которой мои проекты содержат файлы yaml как артефакт для моего кота. Структура папок артефакта выглядела так:

swagger_ui
├── index.html
└── api
    ├── root.yaml
    ├── paths
    │   ├── path1.yaml
    │   ├── path2.yaml
    │   └── ...
    └── schemas
        ├── schema1.yaml
        ├── schema2.yaml
        └── ...

Теперь все ошибки CORS исчезли, так как все мои ссылки теперь находятся в одном источнике (например, "http://localhost: 8080 / swagger_ui") Пока все хорошо.

Теперь я хотел иметь простой способ редактирования файлов с помощью Swagger Editor. В редакторе Swagger я нажимаю Файл -> Импортировать URL и импортирую мой root .yaml файл. Теперь я получаю кучу сообщений о том, что URL-адреса «путей» и «схем» не могут быть разрешены ... Это имеет смысл, поскольку я импортировал только root .yaml, а файлы путей и схем хранятся в совершенно разных файлах. сервер. Поэтому мой текущий подход заключается в развертывании Swagger Editor вместе с Swagger UI в моем коте. Текущая структура папок выглядит следующим образом:

swagger_ui
└── index.html
swagger_editor
└── index.html
api
├── root.yaml
├── paths
│   ├── path1.yaml
│   ├── path2.yaml
│   └── ...
└── schemas
    ├── schema1.yaml
    ├── schema2.yaml
    └── ...

Я думаю, я могу использовать, например. «$ ref: '../api/paths/path1.yaml'» для ссылки на файл path1.yaml из ОБА Swagger UI и редактора Swagger, но я получаю сообщение об ошибке:

Не удалось Разрешить ссылку. Попытка разрешить относительный URL без basePath. путь: '../api/paths/path1.yaml' basePath: 'undefined' ".

Помимо этой ошибки ... Использование" .. "для go до одного каталога делает не кажется правильным само по себе ...

Таким образом, вопрос заключается в следующем: Как правильно настроить определение API Swagger со следующими свойствами:

  1. Распространяется на несколько файлов yaml
  2. Его можно редактировать в Swagger Editor
  3. Его также можно просто визуализировать в интерфейсе Swagger

Если мой текущий подход Это совершенно неправильно, и есть совершенно другой подход, пожалуйста, скажите мне. Нет необходимости использовать tomcat или что-либо еще, что я изложил выше. Я просто хотел знать, имеет ли мой подход какой-либо смысл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...