簡體   English   中英

swagger-ui-express未在瀏覽器中呈現,但在Postma中具有響應正文

[英]swagger-ui-express is not rendering in browser but has response body in Postma

我正在嘗試記錄一個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))

一切正常,但是我希望基於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

我也面臨着同樣的問題,在深入查找后發現該問題與錯誤的響應頭有關。 就我而言,響應頭設置為res.setHeader('Content-Type', 'application/json'); 刪除后有效。

確保您的響應標頭具有Content-Type: text/html; charset=utf-8 Content-Type: text/html; charset=utf-8

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM