我正在尝试记录我使用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))
它不起作用(无法在浏览器中呈现)。当我使用断点检查控制流时,我注意到以下方法执行顺序
app.use
app.get
app.get
答案 0 :(得分:2)
我也面临着同样的问题,在深入研究发现该问题与错误的响应头有关之后。在我的情况下,响应标头设置为res.setHeader('Content-Type', 'application/json');
。删除后可以正常工作。
确保您的响应标头包含Content-Type: text/html; charset=utf-8