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注释+用户管理相关推荐

  1. linux初级学习笔记七:linux用户管理,密码和组命令详解!(视频序号:04_1)

    本节学习的命令: 用户管理命令:useradd,userdel,id,finger,usermod,chsh,chfn,passwd,pwck, 组管理命令:groupadd,groupmod,gro ...

  2. oracle 权限问题9017,[数据库]oracle学习笔记(一)用户管理_星空网

    oracle学习笔记(一)用户管理 2014-04-13 0 1 --oracle学习第一天 2 --连接 @后面连接数据库实例,具体连接到那个数据库 3 conn scott/tiger@MYORA ...

  3. MongoDB学习笔记三:查询

    MongoDB中使用find来进行查询.查询就是返回一个集合中文档的子集,子集合的范围从0个文档到整个集合.find的第一个参数决定了要返回哪些文档,其形式也是一个文档,说明要执行的查询细节. 空的查 ...

  4. MongoDB学习笔记(一) MongoDB介绍及安装

    系列目录 MongoDB学习笔记(一) MongoDB介绍及安装     MongoDB学习笔记(二) 通过samus驱动实现基本数据操作     MongoDB学习笔记(三) 在MVC模式下通过Jq ...

  5. node.js服务端笔记文档学会写接口,学习分类:path、包、模块化、fs、express、中间件、jwt、开发模式、cors。

    node.js 学习笔记 node.js服务端笔记文档学会写接口,path.包.模块化.fs.express.中间件.JWT.开发模式.cors. gitee:代码接口笔记 1什么是node.js n ...

  6. Mongodb使用学习笔记(三)

    文章目录 Mongodb使用学习笔记(三) 1. MongoDB 更新文档 1.1 update() 1.2 save() Mongodb使用学习笔记(三) 1. MongoDB 更新文档 参考:Mo ...

  7. 【AngularJs学习笔记三】Grunt任务管理器

    为什么80%的码农都做不了架构师?>>>    #0 系列目录# AngularJs学习笔记 [AngularJs学习笔记一]Bower解决js的依赖管理 [AngularJs学习笔 ...

  8. 为一个 iOS 应用编写一个简单的 Node.js/MongoDB Web 服务

    原文链接:https://github.com/nixzhu/dev-blog/blob/master/2014-04-21-write-a-simple-nodejs-mongodb-web-ser ...

  9. MongoDB学习笔记(入门)

    MongoDB学习笔记(入门) 一.文档的注意事项: 1.  键值对是有序的,如:{ "name" : "stephen", "genda" ...

最新文章

  1. linux 工具src,10个被称为Sysadmin的Linux工具
  2. Flask restful api与blueprint结合实践
  3. linux系统pycharm安装配置
  4. SVN Files 的值“ .mine”无效。路径中具有非法字符。
  5. IIS支持Shtml后辍文件方法
  6. Java并发:线程共享变量可见性原理
  7. python mock接口怎么用_python接口自动化测试 - mock模块基本使用介绍
  8. Linux删除带空格的文件 删除最后一个后缀名
  9. 制作课件的软件及特点作用
  10. c语言do while例子,C语言do while循环
  11. tcp中RACK算法
  12. 反向传播算法为什么要“反向”
  13. ABAP tRFC和qRFC
  14. 54家半导体芯片原厂涨价、调价及交期变动通知函!
  15. Web课程设计高校物资管理系统
  16. 外贸群发邮箱如何选择
  17. N-苯基马来酰亚胺的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  18. ubuntu-安装ROS Kinetic(推荐)
  19. 首次沙龙场面火爆,高能分享掌声不断,大咖观点集锦为你总结好了
  20. Maben 编译 jenjins配置

热门文章

  1. JDK9安装和配置环境变量
  2. shell生成随机字符串
  3. MTK平台手机重启问题分析
  4. python截图代码_Python为PPT文件进行截图操作的代码
  5. 教学设计例--跟小猴子一起玩
  6. H264 X264_【资料汇编】不同视频编码器质量对比——NVENC、QuickSync、X264和X265
  7. word把选择答案弄到题目里_word2003考试选择题及答案
  8. JavaScript的奇技淫巧
  9. vue实现微信分享遮罩层禁止点击禁止滚动
  10. WIFI UDP 实时广播 发送数据