express+mysql搭建后台(二)

79 阅读1分钟

使用swagger

安装依赖

npm i swagger-ui-express swagger-jsdoc

swagger.js

const path = require("path");
const express = require("express");
const swaggerUI = require("swagger-ui-express");
const swaggerDoc = require("swagger-jsdoc");
//配置swagger-jsdoc
const options = {
  definition: {
    openapi: "3.0.0",
    info: {
      title: "api",
      version: "1.0.0",
      description: `测试`,
    },
    // 添加身份验证
    components: {
      securitySchemes: {
        Bearer: {
          type: "apiKey",
          in: "header",
          name: "Authorization",
        },
      },
    },
    security: [
      {
        Bearer: [],
      },
    ],
  },
  // 去哪个路由下收集 swagger 注释
  apis: [path.join(__dirname, "../../api/*.js")],
};

var swaggerJson = function (req, res) {
  res.setHeader("Content-Type", "application/json");
  res.send(swaggerSpec);
};
const swaggerSpec = swaggerDoc(options);

var swaggerInstall = function (app) {
  if (!app) {
    app = express();
  }
  // 开放相关接口,
  app.get("/swagger.json", swaggerJson);
  // 使用 swaggerSpec 生成 swagger 文档页面,并开放在指定路由
  app.use("/swagger", swaggerUI.serve, swaggerUI.setup(swaggerSpec));
};
module.exports = swaggerInstall;

添加swagger接口

此时去访问http://localhost:3000/swagger 应该是可以的,但是里面并没有接口数据,你需要在写接口的地方加上swag的注解

以登录接口为例
/**
 * @swagger
 * /Admin/Login:
 *   post:
 *     tags: [admin]
 *     summary: "登录"
 *     consumes:
 *       - application/json
 *     requestBody:
 *       required: true
 *       content:
 *         application/json:
 *           schema:
 *             type: object
 *             properties:
 *               userName:
 *                 type: string
 *               password:
 *                 type: string
 *             required:
 *               - userName
 *               - password
 *     responses:
 *       '200':
 *         description: Successful response
 */

如此,再次访问,就可以看到swagger有了一个登录接口了

Snipaste_2025-01-13_11-15-35.png