使用nodejs(6)_route接口配置_swagger配置

154 阅读4分钟

1-routes文件下的index文件

    /**
     * 描述: 初始化路由信息,自定义全局异常处理
    */

    const express = require('express');
    // const boom = require('boom'); // 引入boom模块,处理程序异常状态
    const userRouter = require('./users'); // 引入user路由模块
    const taskRouter = require('./tasks'); // 引入task路由模块
    const { jwtAuth, decode } = require('../utils/user-jwt'); // 引入jwt认证函数
    const router = express.Router(); // 注册路由 

    router.use(jwtAuth); // 注入认证模块

    router.use('/api', userRouter); // 注入用户路由模块
    router.use('/api', taskRouter); // 注入任务路由模块
    router.use('/api', manageRouter); // 注入项目管理路由模块

    // 自定义统一异常处理中间件,需要放在代码最后
    router.use((err, req, res, next) => {
      // 自定义用户认证失败的错误返回
      console.log('err===', err);
      // if (err && err.name === 'UnauthorizedError') {
      //   console.log('first')
      //   const { status = 401, message } = err;
      //   // 抛出401异常
      //   res.status(status).json({
      //     code: status,
      //     msg: 'token失效,请重新登录',
      //     data: null
      //   })
      // } else {
        const { output } = err || {};
        // 错误码和错误信息
        const errCode = (output && output.statusCode) || 500;
        const errMsg = (output && output.payload && output.payload.error) || err.message;
        res.status(errCode).json({
          code: errCode,
          msg: errMsg
        })
      // }
    })

    module.exports = router;

其中包含jwt认证模块,异常处理,注册路由

2-user.js用户登录模块

    /**
     * 描述: 用户路由模块
    */

    const express = require('express');
    const router = express.Router();
    const { body } = require('express-validator');
    const service = require('../services/userService');


    // 登录/注册校验
    const vaildator = [
      body('username').isString().withMessage('用户名类型错误'),
      body('password').isString().withMessage('密码类型错误')
    ]

    // 用户登录路由
    router.post('/login', vaildator, service.login);

    module.exports = router;

3-任务处理模块

    /**
     * 描述: 任务路由模块
    */

    const express = require('express');
    const router = express.Router();
    const service = require('../services/taskService');

    /**,
     * @swagger
     * /api/queryTaskList:
     *    get:
     *      tags:
     *      - 查询填报统计
     *      summary: 查询填报统计列表接口
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: department
     *        in: query
     *        description: 部门
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: year
     *        in: query
     *        description: 填报年份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: month
     *        in: query
     *        description: 填报月份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: status
     *        in: query
     *        description: 填报状态
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    /**,
     * @swagger
     * /api/queryHistoryList:
     *    get:
     *      tags:
     *      - 查询历史填报列表
     *      summary: 查询历史填报列表
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: username
     *        in: query
     *        description: 姓名
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    /**,
     * @swagger
     * /api/queryTaskProject:
     *    get:
     *      tags:
     *      - 查询个人填报
     *      summary: 查询某人某月份所填报项目列表
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: username
     *        in: query
     *        description: 姓名
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: year
     *        in: query
     *        description: 填报年份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: month
     *        in: query
     *        description: 填报月份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    /**,
     * @swagger
     * /api/addTaskProject:
     *    post:
     *      tags:
     *      - 添加某月项目列表
     *      summary: 添加某月项目列表
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: username
     *        in: query
     *        description: 姓名
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: year
     *        in: query
     *        description: 填报年份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: month
     *        in: query
     *        description: 填报月份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: data
     *        in: query
     *        description: 填报项目列表
     *        required: false
     *        type: list
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    /**,
     * @swagger
     * /api/editTaskProject:
     *    post:
     *      tags:
     *      - 编辑某月项目列表
     *      summary: 编辑某月项目列表
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: username
     *        in: query
     *        description: 姓名
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: year
     *        in: query
     *        description: 填报年份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: month
     *        in: query
     *        description: 填报月份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: data
     *        in: query
     *        description: 填报项目列表
     *        required: false
     *        type: list
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    /**,
     * @swagger
     * /api/exportTotalExcel:
     *    get:
     *      tags:
     *      - 导出填报统计接口
     *      summary: 导出填报统计接口
     *      produces:
     *      - application/json
     *      parameters:
     *      - name: department
     *        in: query
     *        description: 部门
     *        required: false
     *        type: string
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: year
     *        in: query
     *        description: 填报年份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      - name: month
     *        in: query
     *        description: 填报月份
     *        required: false
     *        type: integer
     *        maximum:
     *        minimum: 1
     *        format:
     *      responses:
     *        200:
     *          description: successful operation
     *          schema:
     *            ref: #/definitions/Order
     *        400:
     *          description: Invalid ID supplied
     *        404:
     *          description: Order not found
     * */

    // 查询填报统计列表接口
    router.get('/queryTaskList', service.queryTaskList);

    // 查询历史填报列表接口
    router.get('/queryHistoryList', service.queryHistoryList);

    //查询某人某月份所填报项目列表接口
    router.get('/queryTaskProject', service.queryTaskProject);

    //添加某月项目列表
    router.post('/addTaskProject', service.addTaskProject);

    //编辑某月项目列表
    router.post('/editTaskProject', service.editTaskProject);

    // 导出填报统计接口
    router.get('/exportTotalExcel', service.exportTotalExcel);

    module.exports = router;

这里包含了大量的swagger标识,在公共函数中配置了routes文件夹下,会自动识别渲染到页面。注意格式不能乱,主要修改访问方式,访问路径,访问需要携带的参数。