Как экспортировать файл JSON/YAML Swagger из пользовательского интерфейса Swagger?
Как я могу экспортировать файл определения Swagger (это должен быть файл JSON или YAML)? Меня просят об этом, и у меня есть только поверхностные знания о Swagger.
У нас есть конечная точка, похожая на http://example.com//swagger/ui/index#!
который выглядит следующим образом (скриншот не является нашей реальной конечной точкой, хотя я не могу опубликовать это):
Версия 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, поэтому вы можете щелкнуть правой кнопкой мыши ссылку и сохранить как.
Если ваш пользовательский интерфейс 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, чтобы сузить список.
Ответ 2
JSON также может быть встроен в документ, особенно для Swagger версии 2.0. Если после поиска ответа @Helen вы ничего не нашли, попробуйте:
- Просмотр страницы источника
- Поиск
"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/
, я вижу:
Конечная точка docs/
была настроена в Django, поэтому она может отличаться для вас. При копании в деталях, я могу перейти на вкладку Response (в Chrome) и прокрутить вниз, чтобы найти фактический JSON. Это значение в window.drsSpec
2) Альтернативный (и, возможно, более простой) подход заключается в добавлении ?format=openapi
к моей конечной точке, как предложено в https://github.com/marcgibbons/django-rest-swagger/issues/590
Это напрямую выплюнет JSON, который вам нужен. Я импортировал его в "Почтальон", изменив поле swagger
на openapi
, которое кажется немного странным, но это сработало 🤷🏻♂️
Ответ 4
Хотя на этот вопрос уже был дан ответ, и он правильный, я подумал, что выложу более подробную версию. Надеюсь, это поможет,
- Если у вас есть файл json swagger, который вы передаете в пользовательский интерфейс swagger, то для создания файла .yaml просто нажмите на ссылку ниже, скопируйте и вставьте свой json в редактор и загрузите файл yaml. Это прямой метод
ссылка: https://editor.swagger.io/#
- Теперь второй способ, где у вас нет никакого swagger json файла, тогда должны помочь следующие шаги,
Откройте пользовательский интерфейс Swagger, осмотрите (Shift + Ctrl + i), обновите страницу, и вы получите вкладки, как показано ниже
Выберите вкладку XHR или "Все" на вкладке " Сеть ", проверьте наличие файла api-doc? Group = * и щелкните ответ вложенной вкладки. * Теперь скопируйте содержимое файла ap-doc? Group. ** и используйте ту же ссылку редактора для преобразования в файл yaml
ссылка: https://editor.swagger.io/#