swagger-ui-express не отображает в браузере, но имеет тело ответа в Postma - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь документировать 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))

Не работает (не отображается в браузере). Когда я проверил поток управления с помощью точек останова, я заметил следующий порядок выполнения метода

  1. app.use
  2. 2-ой app.get
  3. 1-й app.get
...