资讯专栏INFORMATION COLUMN

4.3 路由设计/RESTful API-博客后端Api-NodeJs+Express+Mysql实

1fe1se / 3042人阅读

摘要:路由设计路由设计以用户注册为例介绍如何闭环用户注册开发注意点使用邮箱注册验证邮箱是否注册目前真实开发业务大部分都是手机号注册,这块由于没有购买短信服务首先,在文件夹下新建上图中对应真实业务逻辑现附上业务实现代码加密国际化工具类用户服务

路由设计
路由设计 以用户注册为例介绍如何闭环
用户注册开发注意点:(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...

以本项目为例,查询用户信息和更新用户信息接口 可根据不同请求方式来实践

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104080.html

相关文章

  • NodeJs+Express+Mysql + Vuejs 项目战 - 大纲

    摘要:多一个技能多一条出路,祝你在自学道路上越走越好,掌握自己的核心技能,不只是优秀,还要成为不可替代的人 NodeJs+Express+Mysql + Vuejs 项目实战 最近准备写一系列文章,全面讲述如何基于NodeJs + Express + Mysql + Vuejs 从零开发前后端完全分离项目; 文笔及技术可能在某些方面欠佳,请您指正,共同学习进步 前端:Vuejs全家桶 后端:...

    noONE 评论0 收藏0
  • 4.5 Promise/Co yield-博客后端Api-NodeJs+Express+Mysql

    摘要:课前学习对象阮一峰廖雪峰从当年的回调地狱到语法糖再到,通过不断的进化来更好的从代码层面同步方式写异步操作下面以语法糖为例介绍如何实现首先写个基于 Promise 课前学习Promise 对象 阮一峰http://javascript.ruanyifeng....Promise 廖雪峰https://www.liaoxuefeng.com/w... js从当年的回调地狱、到co语法糖再...

    Tamic 评论0 收藏0
  • 4.1 开发环境目录结构配置文件功能梳理-博客后端Api-NodeJs+Express+Mys

    摘要:从本章开始,正式学习如何使用搭建一个博客。但通常我们都会有许多环境,如本地开发环境测试环境和线上环境等,不同的环境的配置不同,我们不可能每次部署时都要去修改引用或者。会根据环境变量的不同从当前执行进程目录下的目录加载不同的配置文件。 从本章开始,正式学习如何使用 Nodejs + Express + Mysql 搭建一个博客。 开发环境 首先说下开发环境安装的核心依赖版本: Node....

    DevWiki 评论0 收藏0
  • 4.2 数据库表/Sequelize Mysql-博客后端Api-NodeJs+Express+My

    功能梳理完了以后,咱们就可以开始数据库表设计了: 数据库表图: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打开Navicat Premium 创建数据库 blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 课前学习:1、Sequ...

    nicercode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<