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{//生成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页面,然后可以对以上三个接口进行测试
Node.js+mongodb 学习笔记(三)swagger注释+用户管理相关推荐
- linux初级学习笔记七:linux用户管理,密码和组命令详解!(视频序号:04_1)
本节学习的命令: 用户管理命令:useradd,userdel,id,finger,usermod,chsh,chfn,passwd,pwck, 组管理命令:groupadd,groupmod,gro ...
- oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网
oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...
- MongoDB学习笔记三:查询
MongoDB中使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档,其形式也是一个文档,说明要执行的查询细节. 空的查 ...
- MongoDB学习笔记(一) MongoDB介绍及安装
系列目录 MongoDB学习笔记(一) MongoDB介绍及安装 MongoDB学习笔记(二) 通过samus驱动实现基本数据操作 MongoDB学习笔记(三) 在MVC模式下通过Jq ...
- node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。
node.js 学习笔记 node.js服务端笔记文档学会写接口,path.包.模块化.fs.express.中间件.JWT.开发模式.cors. gitee:代码接口笔记 1什么是node.js n ...
- Mongodb使用学习笔记(三)
文章目录 Mongodb使用学习笔记(三) 1. MongoDB 更新文档 1.1 update() 1.2 save() Mongodb使用学习笔记(三) 1. MongoDB 更新文档 参考:Mo ...
- 【AngularJs学习笔记三】Grunt任务管理器
为什么80%的码农都做不了架构师?>>> #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...
- 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务
原文链接:https://github.com/nixzhu/dev-blog/blob/master/2014-04-21-write-a-simple-nodejs-mongodb-web-ser ...
- MongoDB学习笔记(入门)
MongoDB学习笔记(入门) 一.文档的注意事项: 1. 键值对是有序的,如:{ "name" : "stephen", "genda" ...
最新文章
- linux 工具src,10个被称为Sysadmin的Linux工具
- Flask restful api与blueprint结合实践
- linux系统pycharm安装配置
- SVN Files 的值“ .mine”无效。路径中具有非法字符。
- IIS支持Shtml后辍文件方法
- Java并发:线程共享变量可见性原理
- python mock接口怎么用_python接口自动化测试 - mock模块基本使用介绍
- Linux删除带空格的文件 删除最后一个后缀名
- 制作课件的软件及特点作用
- c语言do while例子,C语言do while循环
- tcp中RACK算法
- 反向传播算法为什么要“反向”
- ABAP tRFC和qRFC
- 54家半导体芯片原厂涨价、调价及交期变动通知函!
- Web课程设计高校物资管理系统
- 外贸群发邮箱如何选择
- N-苯基马来酰亚胺的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- ubuntu-安装ROS Kinetic(推荐)
- 首次沙龙场面火爆,高能分享掌声不断,大咖观点集锦为你总结好了
- Maben 编译 jenjins配置