4.3 路由設計/RESTful API-博客後端Api-NodeJs+Express+Mysql實戰

路由設計

路由設計 以用戶註冊爲例介紹如何閉環
用戶註冊開發注意點:(1)使用郵箱註冊(2)驗證郵箱是否註冊 【目前真實開發業務大部分都是手機號註冊,這塊因爲沒有購買短信服務】

clipboard.png

首先,在routers文件夾下新建user.jshtml

clipboard.png

clipboard.png
上圖中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來測試驗證接口正確性

Postman下載
https://www.getpostman.com/
http://chromecj.com/web-devel...

先將項目跑起來chrome

npm run dev

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

RESTful API

RESTful API 最佳實踐
http://www.ruanyifeng.com/blo...
Nodejs RESTFul架構實踐之api篇
https://my.oschina.net/nodeon...

以本項目爲例,查詢用戶信息和更新用戶信息接口 可根據不一樣請求方式來實踐npm

clipboard.png

相關文章
相關標籤/搜索