Как экспортировать файл JSON/YAML Swagger из пользовательского интерфейса Swagger?

Как я могу экспортировать файл определения Swagger (это должен быть файл JSON или YAML)? Меня просят об этом, и у меня есть только поверхностные знания о Swagger.

У нас есть конечная точка, похожая на http://example.com//swagger/ui/index#! который выглядит следующим образом (скриншот не является нашей реальной конечной точкой, хотя я не могу опубликовать это):

enter image description here

Версия api version: v1.

Нет кнопки "Экспорт", которую я вижу. Так как мне его экспортировать?

Ответы

Ответ 1

URL-адрес определения API отображается в верхней строке интерфейса Swagger - в вашем примере это

/v2/api-docs?group=full-petstore-api

Таким образом, полный URL-адрес

http://localhost:8080/v2/api-docs?group=full-petstore-api


В новых версиях пользовательского интерфейса Swagger ссылка на определение API часто отображается под заголовком API, поэтому вы можете щелкнуть правой кнопкой мыши ссылку и сохранить как.

Link to API definition in Swagger UI 3.x


Если ваш пользовательский интерфейс Swagger не имеет видимой ссылки на определение API, просмотрите источник страницы и найдите параметр url, например:

const ui = SwaggerUIBundle({
  url: "https://petstore.swagger.io/v2/swagger.json",     // <-------
  dom_id: '#swagger-ui',


Если вы не видите url или url является выражением кода, откройте инструменты браузера, перейдите на вкладку " Сеть " и отключите кеширование. Затем обновите страницу и найдите файл определения API (swagger.json, swagger.yaml, api-docs или аналогичный) среди HTTP-запросов. Вы можете фильтровать XHR, чтобы сузить список.

Finding the Swagger file on the Network tab of browser dev tools

Ответ 2

JSON также может быть встроен в документ, особенно для Swagger версии 2.0. Если после поиска ответа @Helen вы ничего не нашли, попробуйте:

  1. Просмотр страницы источника
  2. Поиск "swagger" или "spec"

Если вы видите тег <script type="application/json"> с чем-то похожим на следующее, это, по сути, ваш контент swagger.json. Скопируйте все внутри тегов <script> и сохраните в файл с именем swagger.json, и все будет хорошо.

<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>

Ответ 3

Я использую Django Rest Framework (так что пакет pip django-rest-swagger==2.2.0), и приведенных выше ответов было недостаточно. Было два варианта:

1) Просмотр исходного кода с помощью инструментов разработчика. Когда я нажимаю на мою конечную точку http://localhost:8000/docs/, я вижу:

enter image description here

Конечная точка docs/ была настроена в Django, поэтому она может отличаться для вас. При копании в деталях, я могу перейти на вкладку Response (в Chrome) и прокрутить вниз, чтобы найти фактический JSON. Это значение в window.drsSpec

enter image description here

2) Альтернативный (и, возможно, более простой) подход заключается в добавлении ?format=openapi к моей конечной точке, как предложено в https://github.com/marcgibbons/django-rest-swagger/issues/590

Это напрямую выплюнет JSON, который вам нужен. Я импортировал его в "Почтальон", изменив поле swagger на openapi, которое кажется немного странным, но это сработало 🤷🏻‍♂️

Ответ 4

Хотя на этот вопрос уже был дан ответ, и он правильный, я подумал, что выложу более подробную версию. Надеюсь, это поможет,

  1. Если у вас есть файл json swagger, который вы передаете в пользовательский интерфейс swagger, то для создания файла .yaml просто нажмите на ссылку ниже, скопируйте и вставьте свой json в редактор и загрузите файл yaml. Это прямой метод

ссылка: https://editor.swagger.io/#

  1. Теперь второй способ, где у вас нет никакого swagger json файла, тогда должны помочь следующие шаги,

Откройте пользовательский интерфейс Swagger, осмотрите (Shift + Ctrl + i), обновите страницу, и вы получите вкладки, как показано ниже

enter image description here

Выберите вкладку XHR или "Все" на вкладке " Сеть ", проверьте наличие файла api-doc? Group = * и щелкните ответ вложенной вкладки. * Теперь скопируйте содержимое файла ap-doc? Group. ** и используйте ту же ссылку редактора для преобразования в файл yaml

ссылка: https://editor.swagger.io/#