Package Exports
- swagger-express-next
- swagger-express-next/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (swagger-express-next) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
swagger express next
Описание
Модуль реализует использование пакета swagger-ui
в виде промежуточного программного обеспечения express.
Простое решение с неограниченными возможностями модификации загрузочной страницы
и поддержкой всех настроек скрипта инициализации.
Совместим с swagger-ui-express.
Может использоваться без express.
Использование
Прямое
const swagger = require('swagger-express-next').swagger
const express = require('express')
const app = express()
const swaggerDocument = '{"openapi": "3.0.0","info": {"title": "test","version": "1.0"}}'
app.use('/api', swagger({spec: swaggerDocument}, {head: '<title>Swagger Test</title>'}))
app.listen(3000)В качестве замены для swagger-ui-express
+ require('swagger-express-next').moduleReplace()
const express = require('express')
const app = express()
const swaggerUi = require('swagger-ui-express')
const swaggerDocument = '{"openapi": "3.0.0","info": {"title": "test","version": "1.0"}}'
app.use('/api', swaggerUi.serve, swaggerUi.setup(swaggerDocument))
app.listen(3000)Без express
const {createServer} = require('node:http')
const {swagger} = require('swagger-express-next')
const swaggerDocument = {openapi: "3.0.0", info: {title: "test", version: 1.0}}
createServer((req, res) => {
swagger({spec: swaggerDocument}, {head: '<title>Swagger Test</title>'})(req, res)
}).listen(3000, '127.0.0.1', e => {
e ? console.log('HTTP server start error', e) : console.log('HTTP server running ...')
})Больше примеров смотрите в тестах.
Установка
npm i swagger-express-nextПараметры
Общий пример
const swagger = require('swagger-express-next').swagger
const express = require('express')
const app = express()
const settings = {
html: {header: '<title>Swagger Test</title>'},
script: {
layout:'StandaloneLayout',
url: 'https://petstore.swagger.io/v2/swagger.json',
},
params: {
script: {default: true, join: true},
html: {default: true},
queryConfig: false,
type: {newParam1: {type: 'array', itemsType: 'string'}, newParam2: 'boolean'},
}
}
app.use('/api', swagger(settings))
// OR
// app.use('/api', swagger(settings.script, settings.html, settings.params))
app.listen(3000)swagger(script, html, params)
script: object
Смотрите swagger-ui configuration
Исключения:
syntaxHighlight: только object
initOAuth: только object
requestSnippets.languages array[string]
Типы значений могут отличаться от указанных в документации, так array можно передать в виде строки, если добавляется одно значение, bool в виде строки и т.д. Если скрипт не сможет привести переданные значения к установленным типам будет выдано исключение. Объекты и json преобразуются с помощью JSON.stringify и JSON.parse соответственно, в случаи ошибки исключения не выдаются, описание ошибки можно найти в браузере в виде объекта {objson_error: e} на том ключе которому был передан объект или json.
html: object
- header: string or array or object(values) html теги, добавляются перед
</head> - body: string or array or object(values) html теги, добавляются перед
</body>
params: object
- script: object по умолчанию {default: true, join: true}
- default: boolean
Использовать параметры предложенные разработчиками swagger-ui при генерации скрипта, будут дополнены / изменены значениями из параметра script. - join: boolean
- true параметры типа массив дополняются пользовательскими значениями.
- false заменяет массив значений предложенных разработчиками на пользовательский.
- default: boolean
- html: object по умолчанию {default: true}
- default: boolean
Использовать параметры предложенные разработчиками swagger-ui при генерации страницы загрузки, будут дополнены / изменены значениями из параметра html.
- default: boolean
- queryConfig: boolean
Разрешает передачу параметров в запросе, методом GET и POST - type: object
Позволяет передать пользовательские типы для ключей скрипта инициализации.
Типы могут быть объявлены как объект или строка и соответствовать используемым в стандартных типах.
Тип массив всегда должен указываться в виде объекта {type: 'array', itemsType: 'string'} или {type: 'array', itemsType: 'function'}.
Совместимость
Тестирование произведено на:
NestJS 8.4.7
Примеры из тестов swagger-ui-express
Для подмены пакета swagger-ui-express используется функция moduleReplace.
Функцию нужно вызвать до импорта swagger-ui-express.
require('swagger-express-next').moduleReplace()
const swaggerUi = require('swagger-ui-express')Если пакет swagger-ui-express обнаружен в node_modules его директория будет переименована в swagger-ui-express_original. В новую директорию swagger-ui-express копируются файлы из swagger-express-next.