2016-09-15 1 views
1

Я пытаюсь документировать через пользовательский интерфейс Swagger для внутреннего потребления компанией существующие сервисы API, которые разрабатываются у поставщика продукт (WSO2 ESB). Продукт поставщика не поддерживает чванство. Я планирую программно проверить/обработать исходный код для моих сервисов API (написанных в продукте поставщика) и сгенерировать каталог/папку/библиотеку файлов определения swagger в формате .json или .yml. Это нормально, я могу это сделать.Как организовать/построить интерфейс интерфейса Swagger для каталога, который содержит множество определений Swagger .json/.yml

Каждый из этих файлов defi-файлов api отлично отображает пользовательский интерфейс swagger, я использую https://www.npmjs.com/package/swagger-ui.

Моя проблема заключается в том, что у меня будет около 100 из этих файлов определений API, я хотел бы предоставить некоторый всеобъемлющий интерфейс/страницу, в которой перечислены все API, а затем передается пользователю в интерфейс Swagger с определенным определением API когда пользователь нажимает на одну из ссылок. Это эквивалентно открытию моего локального swagger-ui и ручному набору/копированию на пути к соответствующему определению API. Это работает отлично, если я делаю это вручную, я просто не хочу, чтобы пользователь должен был делать это вручную. Как они узнают, какие существуют API-определения url и почему их вручную набирают/копируют.

Я не вижу, как передать параметр «apiDefintionToLoad» в Swagger-ui, я думаю, что я либо найду его, либо измените источник, чтобы поддержать это. Это существует?

Есть ли лучшее решение для разработки или использования существующего пакета или решения? Я предпочитаю решения на основе узлов, java тоже в порядке.

Я иду на это неправильно?

Thanks, Matt.

ответ

2

То, что вы ищете, можно легко сделать с помощью базового инструмента Swagger-ui.

По существу, у вас есть список многих определений чванства. Я предполагаю, что вы хотите, чтобы пользователь нажал кнопку или ссылку, или выберите определение из раскрывающегося списка, чтобы выбрать API для просмотра. Как только это будет сделано, вы можете сделать следующее:

  • Позвольте пользователю выбрать определение API для отображения. Вы можете легко получить это от добавления элемента HTML к вашему index.html и запускать некоторый javascript после выбора
  • Один контейнер swagger-ui может быть перезагружен и повторно использован. Получить URL для определения развязности с первым шагом и поставить его на объект чванства-Ui, что обычно делается так:

    window.swaggerUi.updateSwaggerUi({url: 'http://your.spec.com/swagger.yaml'})

Теперь контейнер перезагрузится с спецификацией вас» .

+0

Спасибо @fehguy, ваше предположение относительно моего требования верное. Ваше решение звучит так же, как и я. Я приведу его и уточню здесь с результатами. – MattG

+0

Я попробовал ваше предложение @fehguy, хорошо работает, спасибо. – MattG

1

Swagger UI 3.0.19 изначально поддерживает несколько спецификаций через параметр urls. Когда используется urls, верхняя панель отображает раскрывающийся список спецификаций вместо поля ввода.

Использование

Редактировать dist\index.html и изменить

url: "http://petstore.swagger.io/v2/swagger.json", 

в

urls: [ 
    {name: "petstore", url: "http://petstore.swagger.io/v2/swagger.json"}, 
    {name: "instagram", url: "https://api.apis.guru/v2/specs/instagram.com/1.0.0/swagger.yaml"} 
], 
"urls.primaryName": "petstore", // default spec 


Теперь ваша верхняя панель Кураж UI выглядит следующим образом:

Swagger UI top bar with spec selector

+0

попробовал это решение, но он не работает, можете ли вы предложить что-нибудь? –

+0

@ShubhamKundu: Пожалуйста, задайте новый вопрос (https://stackoverflow.com/questions/ask) и опубликуйте код, который вы используете, версию интерфейса Swagger и другие детали. – Helen

Смежные вопросы