我是靠谱客的博主 疯狂菠萝,最近开发中收集的这篇文章主要介绍Node.js+mongodb 学习笔记(三)swagger注释+用户管理Node.js+mongodb 学习笔记(三)swagger注释+用户管理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Node.js+mongodb 学习笔记(三)swagger注释+用户管理

  • Node.js+mongodb 学习笔记(三)swagger注释+用户管理
    • 用户注册
    • 用户登录
    • 修改密码
    • swagger注释

Node.js+mongodb 学习笔记(三)swagger注释+用户管理

首先创建server文件夹,用于存放接口,目录结构如下:
在这里插入图片描述

用户注册

首先进入文件需要的模块

const jwt = require('jsonwebtoken');
var db = require('../utils/mongodb/db.js');
var md5=require('md5-node'); /*md5加密*/
const{
    CODE_ERROE,
    CODE_SUCCESS,
    CODE_TOKEN_EXPIRED,
    PRIVATE_KEY,
    JWT_EXPIRED
 } = require('../utils/constant');

然后编写登录方法,先获取输入的用户名和密码,然后判断用户名是否被注册过,没有被注册过可以进行添加数据库的操作。

//注册
function register(req,res){
    var username = req.body.username;
    var password = md5(req.body.password);
    var obj = {
        username:username,
        password:password
    }
    //1.判断用户名是否已注册
    db.find('user',{username:username},function(err,data){
        if(data==''){
            //2.没有注册进行注册
            db.insert('user',obj,function(err,data){
                if(data!=''){
                    let userData=data.ops;
                    res.json({
                        code:CODE_SUCCESS,
                        msg:'注册成功',
                        data: userData
                    })
                }else{
                    var datas={
                        code:CODE_ERROE,
                        msg:'注册失败',
                        data: ''
                    }
                    res.json(datas);
                }
            })
        }else{
            //3.用户名重复
            var datas={
                code:CODE_ERROE,
                msg:'用户名重复',
                data: ''
            }
            res.json(datas);
        }
    })
}

用户登录

在登录的时候,成功会生成一个token和用户信息一起返回

//登录
function login(req,res){
    var username = req.body.username;
    var password = md5(req.body.password);
    var obj = {
        username:username,
        password:password
    }
    db.find('user',obj,function(err,data){
        if(data==''){
            res.json({
                code:CODE_ERROE,
                msg:'登录失败',
                data: data
            })
        }else{
            //生成token
            const token = jwt.sign(
                {username},
                PRIVATE_KEY,
                {expiresIn:JWT_EXPIRED}
            )
            let userData={
                user:data[0],
                token:token
            }
            res.json({
                code:CODE_SUCCESS,
                msg:'登录成功',
                data: userData
            })
        }
    })
}

修改密码

修改密码要先验证旧密码是否正确,然后判断新密码不能为空

//修改密码
function restPwd(req,res){
    var username = req.body.username;
    var oldpwd = req.body.oldpwd;
    var newpwd = md5(req.body.newpwd);
    var obj1 = {
        username:username,
        password:oldpwd
    }
    db.find('user',obj1,function(err,data){
        if(data==''){
            res.json({
                code:CODE_ERROE,
                message:'用户名或密码错误',
                data:data
            });
        }else{
            if(newpwd==''){
                res.json({
                    code:CODE_ERROE,
                    message:'新密码不能为空',
                    data:''
                });
            }else{
                var obj2 = {
                    username:username,
                    password:newpwd
                }
                db.update('user',obj1,obj2,function(err,data){
                    if(data==''){
                        res.json({
                            code:CODE_ERROE,
                            message:'修改密码失败',
                            data:''
                        });
                    }else{
                        res.json({
                            code:CODE_SUCCESS,
                            message:'修改密码成功',
                            data:''
                        });
                    }
                })
            }
        }
    })
}

最后,要把这三个对外暴露,不然后面路由进行调用会找不到

 module.exports = {
    register,
    login,
    restPwd
  }

swagger注释

swagger注解是写在路由的上面,上一篇在swagger配置的时候声明了去路由文件夹下收集注释,在如下文件内进行编辑:
在这里插入图片描述
首先是登录路由

var express = require('express');
var bodyParser = require('body-parser');
var router = express.Router();
var server = require('../server/userService')
router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());

/**,
 * @swagger
 * /users/addUser:   #路由地址
 *    post:
 *      tags: 
 *      - 用户管理    #接口分类
 *      summary: 添加用户   #接口备注
 *      description: 添加用户   #接口描述
 *      consumes:
 *      - "application/json"    #接口接收参数方式
 *      requestBody:    #编写参数接收体
 *          required: true  #是否必传
 *          content:
 *              application/json:
 *                  schema:     #参数备注
 *                      type: object    #参数类型
 *                      properties:
 *                          username:
 *                                  type: string    #参数类型
 *                                  description: 用户名     #参数描述
 *                          password:
 *                                  type: string    #参数类型
 *                                  description: 密码     #参数描述
 *                  example:        #请求参数样例。
 *                      username: "string"
 *                      password: "string"
 *      responses:  #编写返回体
 *        200:     #返回code码
 *          description: 注册成功     #返回code码描述
 *          content:
 *              application/json:
 *                  schema:
 *                      type: object
 *                      properties:
 *                          code:   #返回的code码
 *                              type: string
 *                              description: 返回code码
 *                          msg:    #返回体信息。***注意写的位置一定要和res_code对齐。
 *                               type: string   #返回体信息类型
 *                               description: 返回信息
 *                          data:
 *                                type: object
 *                                description: 返回数据
 *        -1:
 *          description: 注册失败
 * */
router.post('/addUser', server.register);

这几个方法都是post,注释的大部分内容都是一样的,修改地址,请求参数等信息即可

/**,
 * @swagger
 * /users/login:
 *    post:
 *      tags: 
 *      - 用户管理    #接口分类
 *      summary: 登录   #接口备注
 *      description: 登录   #接口描述
 *      consumes:
 *      - "application/json"    #接口接收参数方式
 *      requestBody:    #编写参数接收体
 *          required: true  #是否必传
 *          content:
 *              application/json:
 *                  schema:     #参数备注
 *                      type: object    #参数类型
 *                      properties:
 *                          username:
 *                                  type: string    #参数类型
 *                                  description: 用户名     #参数描述
 *                          password:
 *                                  type: string    #参数类型
 *                                  description: 密码     #参数描述
 *                  example:        #请求参数样例。
 *                      username: "string"
 *                      password: "string"
 *      responses:  #编写返回体
 *        200:     #返回code码
 *          description: 注册成功     #返回code码描述
 *          content:
 *              application/json:
 *                  schema:
 *                      type: object
 *                      properties:
 *                          code:   #返回的code码
 *                              type: string
 *                              description: 返回code码
 *                          msg:    #返回体信息。***注意写的位置一定要和res_code对齐。
 *                               type: string   #返回体信息类型
 *                               description: 返回信息
 *                          data:
 *                                type: object
 *                                description: 返回数据
 *        -1:
 *          description: 失败
 * */
router.post('/login', server.login);

/**,
 * @swagger
 * /users/restPwd:
 *    post:
 *      tags: 
 *      - 用户管理    #接口分类
 *      summary: 修改密码   #接口备注
 *      description: 修改密码   #接口描述
 *      consumes:
 *      - "application/json"    #接口接收参数方式
 *      requestBody:    #编写参数接收体
 *          required: true  #是否必传
 *          content:
 *              application/json:
 *                  schema:     #参数备注
 *                      type: object    #参数类型
 *                      properties:
 *                          username:
 *                                  type: string    #参数类型
 *                                  description: 用户名     #参数描述
 *                          oldpwd:
 *                                  type: string    #参数类型
 *                                  description: 密码     #参数描述
 *                          newpwd:
 *                                  type: string    #参数类型
 *                                  description: 密码     #参数描述
 *                  example:        #请求参数样例。
 *                      username: "string"
 *                      oldpwd: "string"
 *                      newpwd: "string"
 *      responses:  #编写返回体
 *        200:     #返回code码
 *          description: 注册成功     #返回code码描述
 *          content:
 *              application/json:
 *                  schema:
 *                      type: object
 *                      properties:
 *                          code:   #返回的code码
 *                              type: string
 *                              description: 返回code码
 *                          msg:    #返回体信息。***注意写的位置一定要和res_code对齐。
 *                               type: string   #返回体信息类型
 *                               description: 返回信息
 *                          data:
 *                                type: object
 *                                description: 返回数据
 *        -1:
 *          description: 失败
 * */
router.post('/restPwd', server.restPwd);

全部配置完之后,使用命令启动项目

npm start

项目启动后访问http://127.0.0.1:3000/swagger就会看到如下的swagger页面,然后可以对以上三个接口进行测试
在这里插入图片描述

最后

以上就是疯狂菠萝为你收集整理的Node.js+mongodb 学习笔记(三)swagger注释+用户管理Node.js+mongodb 学习笔记(三)swagger注释+用户管理的全部内容,希望文章能够帮你解决Node.js+mongodb 学习笔记(三)swagger注释+用户管理Node.js+mongodb 学习笔记(三)swagger注释+用户管理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部