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{//生成tokenconst 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页面,然后可以对以上三个接口进行测试