路由设计 以用户注册为例介绍如何闭环
用户注册开发注意点:(1)使用邮箱注册(2)验证邮箱是否注册 【目前真实开发业务大部分都是手机号注册,这块因为没有购买短信服务】
首先,在routers文件夹下新建user.jshtml
上图中checkEmail、reg对应真实业务逻辑node
现附上checkEmail、reg业务实现代码web
/** * 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下载
https://www.getpostman.com/
http://chromecj.com/web-devel...
先将项目跑起来chrome
npm run dev
RESTful API 最佳实践
http://www.ruanyifeng.com/blo...
Nodejs RESTFul架构实践之api篇
https://my.oschina.net/nodeon...
以本项目为例,查询用户信息和更新用户信息接口 可根据不一样请求方式来实践npm