赞
踩
wish-admin项目
第一次写博客 不多说了 直接开干
首先创建管理员名单数据库表admin
命令行生成项目文件
express wish-admin-api
然后安装一下依赖包
npm install async -S mysql2 -S sequelize -S dateformat -S jsonwebtoken -S
修改一下端口号
明确我们要做的功能一下功能
1.登录
2.许愿列表
3.添加许愿
4.获取单条许愿信息
5.修改许愿信息
6.删除许愿信息
7.管理员列表
8.添加管理员
9.获取单条管理员信息
10.修改管理员信息
11.删除管理员信息
加起来一共11个路由
现来登录模块的路由
var express = require('express');//引入express对象
var router = express.Router();//引入路由对象
//引入自定义的controllers
var IndexController = require('../controllers/index')
router.post('/login',IndexController.login);//定义登录路由,post请求
module.exports = router;
然后在项目根目录下的routes目录下新建一个wish.js文件,用来存放许愿管理器模块路由
var express = require('express');
var router = express.Router(); //引入路由对象
//引入自定义的controller
const WishController = require ('../controllers/wish');
router.get('/',WishController.list); //定义许愿列表路由,get请求
router.get('/:id',WishController.info); //定义单条许愿路由,GET请求
router.post('/',WishController.add); //定义添加许愿路由, post请求
router.put('/',WishController.update); //定义修改许愿路由,put请求
router.delete('/',WishController.remove);//定义删除许愿路由,delete请求
module.exports = router;
下一步管理员模块路由在项目根目录的routes目录下新建一个admin.js文件
var express = require('express')
var router = express.Router();
//老样子引入controller
const AdminController = require ('../controllers/admin');
router.get('/',AdminController.list);
router.get('/:id',AdminController.info);
router.post('/',AdminController.add);
router.put('/',AdminController.update);
router.delete('/',AdminController.remove);
module.exports = router;
要想路由配置生效还需要在app.js,将定义的路由文件引进来进行path配置
在这里添加
var wishRouter = require('./routes/wish')
var adminRouter = require('./routes/admin')
在这里添加
app.use('/wish',wishRouter)
app.uee('/admin',adminRouter)
写完以后文件目录是这样的
开始干自定义的方法
common.js中的公共方法
//定义了三个公共方法克隆、校验、返回统一 const async = require('async'); const Constant = require('../constant/constant'); const exportObj = { clone, checkParams, autoFn }; module.exports = exportobj; //导出对象,方便其他方法调用 // 克隆方法,克隆一个对象 // @param obj // @returns {any} function clone(obj){ return JSON.parse(JSON.stringify(obj)); } // 校验参数全局方法 // @param params 请求的参数集 // @param checkArr 需要验证的参数 // @param cb function checkParams (params,checkArr,cb){ let flag = true; checkArr.forEach(v =>{ if(!params[v]){ flag = false; } }); if(flag){ cb(null); }else{ cb(Constant.LACK) } } // 返回同一方法 返回json格式数据 // @param tasks 当前controllers执行tasks //@param res 当前controller responese // @param resObj 当前controller返回json对象 function autoFn(tasks,res,resObj){ async.auto(tasks,function(err){ if(!!err){ console.log(JSON.stringify(err)); res.json({ code:err.code || Constant.DEFAULT_ERROR.code, msg:err.msg || JSON.stringify(err) }); }else{ res.json(resObj); } }); }
除了登录页面外,访问其他页面均需要登陆状态,所以需要色剂一个令牌Token机制,在用户登录成功以后返回Token,前端将其保存,在请求后序接口时带上Token验证是否登录单独定义在Token.js文件中
const jwt = require('jsonwebtoken') const tokenKey = 'XfzEpWEn?ARD7rHBN';//设置一个秘钥,用来加密和解密Token const Token = { // Token加密方式 // @param data 需要加密在Token中的数据 // @param time Token 的过期时间,单位为s // @returns {*} 返回一个Token encrypt:function(data,time){ return jwt.sign(data,tokenKey,{expiresIn: time}) }, // Token解密方法 // @param token 加密之后的Token // @returns 返回对象 // { {token: boolean (true表示Token合法,false则表示不合法), // data: *(解密出来的数据或错误信息)}} decrypt:function(token){ try{
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。