路由设计
路由设计 以用户注册为例介绍如何闭环
用户注册开发注意点:(1)使用邮箱注册(2)验证邮箱是否注册 【目前真实开发业务大部分都是手机号注册,这块由于没有购买短信服务】
首先,在routers文件夹下新建user.js
上图中checkEmail、reg对应真实业务逻辑
现附上checkEmail、reg业务实现代码
/**
* user controllers
* add by wwj
* 2019-05-03 20:52:05
*/
var co = require('co');
var md5 = require('blueimp-md5'); //md5 加密
var i18n = require('i18n'); //i18n 国际化
var utils = require('../libs/utils'); //工具类
var User = require('../models/index').User; //用户
// var tokenService = require('../services/token'); //token服务
module.exports = {
/**
* 检测邮箱是否注册checkEmail
*/
checkEmail:function(req, res, next) {
//参数
var params = req.query || req.params;
//变量
var email = utils.trim(params.email);
if(!email){
utils.handleJson({
response: res,
msg: i18n.__('success'),
result: {
emailHadReg:false,
},
});
}
co(function*() {
var userResult = yield User.findOne({
where: {
email: email,
},
});
var result = false;
if(userResult){
result = true;
}
//success
utils.handleJson({
response: res,
msg: i18n.__('success'),
result: {
emailHadReg:result,
},
});
}).catch(function(error) {
//err
utils.handleError({
response: res,
error: error,
});
});
},
/**
* 注册 post
*/
reg: function(req, res, next) {
var params = req.body;
//变量
var email = utils.trim(params.email);
var password = utils.trim(params.password);
//检查用户名、密码是否为空
if (!email || !password) {
utils.handleJson({
response: res,
msg: i18n.__('emailOrPwdNull'),
});
return;
}
//检查是否注册过
co(function*() {
var userResult = yield User.findOne({
where: {
email: email,
},
});
//用户已被注册
if (userResult) {
utils.handleJson({
response: res,
msg: i18n.__('emailHadReg'),
});
return;
}
userResult = yield User.create({
email: email,
password: md5(password),
state: "1", //先默认已激活状态 //状态 0未激活邮箱、1已激活邮箱
});
if (!userResult) { //注册失败
utils.handleJson({
response: res,
msg: i18n.__('regFail'),
});
return;
}
//成功入库
var user = userResult.dataValues;
//删除密码
delete user.password;
//success
utils.handleJson({
response: res,
msg: i18n.__('regSuccess'),
result: {
user: user,
// accessToken: tokenService.setToken({
// uuid: user.uuid
// }), //token
},
});
}).catch(function(error) {
//err
utils.handleError({
response: res,
error: error,
});
});
},
};
【自测环节】使用Postman来测试验证接口正确性
Postman下载
https://www.getpostman.com/
http://chromecj.com/web-devel...
先将项目跑起来
npm run dev
RESTful API
RESTful API 最佳实践
http://www.ruanyifeng.com/blo...
Nodejs RESTFul架构实践之api篇
https://my.oschina.net/nodeon...
以本项目为例,查询用户信息和更新用户信息接口 可根据不同请求方式来实践
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。