Как создать статический HTML-файл из документации Swagger?
Я создал Swagger документацию с yaml
файл под:
api/swagger/swagger.yaml
Теперь я хочу поделиться статическим html-документом с его определением, но в проекте swagger было заявлено, что они вообще не планируют поддерживать html-генерацию.
Как я могу создать статический HTML-файл из проекта Swagger?
7 ответов
Самый простой способ, который я могу придумать, - это использовать Swagger Editor:
- Перейти к: https://editor.swagger.io/
- Нажмите "Файл" в верхней строке меню и выберите "Импорт файла"
- После импорта нажмите "Создать клиент" в верхней строке меню, а затем выберите "HTML" или "HTML2" для создания статической документации HTML.
editor.swagger.io использует generator.swagger.io для генерации API-клиентов, заглушек и документации сервера, а generator.swagger.io работает на основе проекта с открытым исходным кодом Swagger Codegen.
- Загрузите https://github.com/swagger-api/swagger-ui - интересующая папка " dist"
- Скопируйте ваш Swagger JSON в папку dist
- Откройте index.html и измените значение URL внутри тега в нижней части файла на
./swagger.json
(или как там называется ваш чванливый json) (см. здесь) - Хост онлайн! (или запустить локальный сервер для просмотра вывода).
Существует swagger2markup-cli, который может генерировать статический adoc
файл.
Убедитесь, что у вас установлена среда выполнения Java. (Я использую `Java(TM) SE Runtime Environment (сборка 1.8.0_111-b14)).
Вы берете банку:
wget https://jcenter.bintray.com/io/github/swagger2markup/swagger2markup-cli/1.1.0/swagger2markup-cli-1.1.0.jar
И вы можете генерировать статический adoc
с помощью этого через:
java -jar ~/your/path/swagger2markup-cli-1.1.0.jar help convert -i api/swagger/swagger.yaml --outputFile static-swagger
Этот файл ADOC может быть преобразован в html
подать через asciidoctor
:
asciidoctor *.adoc
Вам может понадобиться установить его, так как я использую Ubuntu, я могу через:
sudo apt-get -qq install asciidoctor
Вы пытаетесь экспортировать его для создания единой документации из разных сервисов? Если да, альтернативой может быть https://github.com/varghgeorge/microservices-single-swagger. Этот простой микросервис springboot покажет всю вашу документацию по swagger (с разных серверов) в одном месте на основе конфигурации YAML.
Используйте такой HTML-файл, чтобы загрузить определение OpenAPI:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" href="//unpkg.com/swagger-ui-dist@3/swagger-ui.css">
<title>Your App API v1</title>
<body>
<div id="your-app-docs" />
<script src="//unpkg.com/swagger-ui-dist@3/swagger-ui-bundle.js"></script>
<script>
window.onload = function () {
const ui = SwaggerUIBundle({
url: "openapi.yml",
dom_id: "#your-app-docs",
deepLinking: true,
})
}
</script>
</body>
</html>
Позже вы можете разместить его локально или использовать службу, такую как Netlify, для размещения в Интернете.
Только что попробовал redocly, получилось довольно круто!
Команда с докером:docker run --rm -v $PWD:/spec redocly/cli build-docs <your_swagger.yaml>
Другой ответ предложил Swagger Editor
, и это здорово. Однако, чтобы получить один файл для импорта в него:
-
npm install -g @apidevtools/swagger-cli
-
swagger-cli bundle openapi.yaml --outfile ./openapi-expanded.json --type json
Приведенная выше команда предполагает, что ваш корневой файл назван
openapi.yaml
и вам нужен выходной файл JSON
openapi-expanded.json
: этот JSON - это то, что вы импортируете.