swagger-ui-express不在浏览器中呈现,但在Postma中具有响应正文

时间:2019-03-12 11:48:39

标签: node.js express swagger swagger-ui

我正在尝试记录我使用swagger-ui-express的API。 当我使用以下内容时,

app.use('/api-docs/*', swaggerUi.serve, swaggerUi.setUp(swaggerDoc)

 app.use('/api-docs/*', swaggerUi.serve)
 app.get('/api-docs/*', swaggerUi.setup(swaggerDoc))

一切正常,但是我希望根据URL命中动态创建swaggerDoc,因此我添加了以下代码。但是现在,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. 第二个app.get
  3. 第一app.get

1 个答案:

答案 0 :(得分:2)

我也面临着同样的问题,在深入研究发现该问题与错误的响应头有关之后。在我的情况下,响应标头设置为res.setHeader('Content-Type', 'application/json');。删除后可以正常工作。

确保您的响应标头包含Content-Type: text/html; charset=utf-8