NodeJS 在 Swagger 文档中添加授权按钮

Nou*_*wla 3 javascript node.js swagger typescript

我需要能够将以下按钮添加到 Swagger 的 UI 界面,以便测试人员可以添加“Bearer token”标头并测试 api。

在此输入图像描述

我的招摇的选项定义是:

module.exports = {
    definition: {
        openapi: "3.0.3",
        info: {
            title: "APIs",
            version: "1.0.0",
        },
        servers: [
            {
                url: `http://localhost:${process.env.PORT}`
            }
        ],
        securityDefinitions: {
            bearerAuth: {
                type: 'apiKey',
                name: 'Authorization',
                scheme: 'bearer',
                in: 'header',
            },
        }
    },
    apis: ["./routes/*.js", "app.js"],
};
Run Code Online (Sandbox Code Playgroud)

我的端点如下:

/**
 * @swagger
 * /api/users/test:
 *  post:
 *      security: 
 *          - Bearer: []
 *      summary: test authorization
 *      tags: [User]
 *      description: use to test authorization JWT
 *      responses:
 *          '200':  
 *              description: success
 *          '500':
 *                  description: Internal server error
 */

router.post('/test', verifyJWT(), async (req, res) => {
    res.send('hi');
})
Run Code Online (Sandbox Code Playgroud)

Joh*_*nny 5

您使用的是 OAS v3 吗?您的声明中有错误,例如securityDefinitions现在被调用securitySchemes并且它在内部components

检查https://swagger.io/docs/specification/authentication/

当您修复架构时,您可以security向路径添加一个属性,以使用安全架构来保护它,这样您就会看到绿色Authorize按钮。

components:
  securitySchemes:

    BearerAuth:
      type: http
      scheme: bearer
Run Code Online (Sandbox Code Playgroud)
paths:
   /api/users/test:
     post:
       security: 
         - BearerAuth: []
Run Code Online (Sandbox Code Playgroud)