Я пытаюсь документировать API, для которого я использую swagger-ui-express
.
Когда я использую следующее,
app.use('/api-docs/*', swaggerUi.serve, swaggerUi.setUp(swaggerDoc)
или
app.use('/api-docs/*', swaggerUi.serve)
app.get('/api-docs/*', swaggerUi.setup(swaggerDoc))
Все отлично работает, но я хочу, чтобы swaggerDoc
создавался динамически на основе попадания URL, поэтому я добавляю следующий код. Но теперь HTML-страница никогда не отображается в браузере, но при попадании в Postman тело ответа выглядит так же, как и при отображении HTML для предыдущего метода.
Поэтому, когда я изменяю приведенный выше код, как показано ниже,
app.use('/api-docs/*', swaggerUi.serve)
app.get('/api-docs/*', function(request, response, next){
console.log(request.url);
var apiNameSplitArray = request.url.split('/')
var apiName = apiNameSplitArray[2]
swaggerDoc = JSONConstructor.JSONConstructorTest(apiName.trim())
next()
})
app.get('/api-docs/*', swaggerUi.setup(swaggerDoc))
Не работает (не отображается в браузере). Когда я проверил поток управления с помощью точек останова, я заметил следующий порядок выполнения метода
app.use
- 2-ой
app.get
- 1-й
app.get