亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

4.3 路由設(shè)計(jì)/RESTful API-博客后端Api-NodeJs+Express+Mysql實(shí)

1fe1se / 3093人閱讀

摘要:路由設(shè)計(jì)路由設(shè)計(jì)以用戶注冊(cè)為例介紹如何閉環(huán)用戶注冊(cè)開(kāi)發(fā)注意點(diǎn)使用郵箱注冊(cè)驗(yàn)證郵箱是否注冊(cè)目前真實(shí)開(kāi)發(fā)業(yè)務(wù)大部分都是手機(jī)號(hào)注冊(cè),這塊由于沒(méi)有購(gòu)買短信服務(wù)首先,在文件夾下新建上圖中對(duì)應(yīng)真實(shí)業(yè)務(wù)邏輯現(xiàn)附上業(yè)務(wù)實(shí)現(xiàn)代碼加密國(guó)際化工具類用戶服務(wù)

路由設(shè)計(jì)
路由設(shè)計(jì) 以用戶注冊(cè)為例介紹如何閉環(huán)
用戶注冊(cè)開(kāi)發(fā)注意點(diǎn):(1)使用郵箱注冊(cè)(2)驗(yàn)證郵箱是否注冊(cè) 【目前真實(shí)開(kāi)發(fā)業(yè)務(wù)大部分都是手機(jī)號(hào)注冊(cè),這塊由于沒(méi)有購(gòu)買短信服務(wù)】

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


上圖中checkEmail、reg對(duì)應(yīng)真實(shí)業(yè)務(wù)邏輯

現(xiàn)附上checkEmail、reg業(yè)務(wù)實(shí)現(xiàn)代碼

/**
 * 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 國(guó)際化
var utils = require("../libs/utils"); //工具類
var User = require("../models/index").User; //用戶
// var tokenService = require("../services/token"); //token服務(wù)

module.exports = {
    /**
     * 檢測(cè)郵箱是否注冊(cè)checkEmail
     */
    checkEmail:function(req, res, next) {
        //參數(shù)
        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,
            });
        });
    },
    /**
     * 注冊(cè) 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;
        }
        //檢查是否注冊(cè)過(guò)
        co(function*() {
            var userResult = yield User.findOne({
                where: {
                    email: email,
                },
            });
            //用戶已被注冊(cè)
            if (userResult) {
                utils.handleJson({
                    response: res,
                    msg: i18n.__("emailHadReg"),
                });
                return;
            }
            userResult = yield User.create({
                email: email,
                password: md5(password),
                state: "1", //先默認(rèn)已激活狀態(tài) //狀態(tài) 0未激活郵箱、1已激活郵箱
            });
            if (!userResult) { //注冊(cè)失敗
                utils.handleJson({
                    response: res,
                    msg: i18n.__("regFail"),
                });
                return;
            }
            //成功入庫(kù)
            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,
            });
        });
    },
};
【自測(cè)環(huán)節(jié)】使用Postman來(lái)測(cè)試驗(yàn)證接口正確性
Postman下載 
https://www.getpostman.com/
http://chromecj.com/web-devel...

先將項(xiàng)目跑起來(lái)

npm run dev

RESTful API
RESTful API 最佳實(shí)踐 
http://www.ruanyifeng.com/blo...
Nodejs RESTFul架構(gòu)實(shí)踐之a(chǎn)pi篇
https://my.oschina.net/nodeon...

以本項(xiàng)目為例,查詢用戶信息和更新用戶信息接口 可根據(jù)不同請(qǐng)求方式來(lái)實(shí)踐

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/104080.html

相關(guān)文章

  • NodeJs+Express+Mysql + Vuejs 項(xiàng)目實(shí)戰(zhàn) - 大綱

    摘要:多一個(gè)技能多一條出路,祝你在自學(xué)道路上越走越好,掌握自己的核心技能,不只是優(yōu)秀,還要成為不可替代的人 NodeJs+Express+Mysql + Vuejs 項(xiàng)目實(shí)戰(zhàn) 最近準(zhǔn)備寫一系列文章,全面講述如何基于NodeJs + Express + Mysql + Vuejs 從零開(kāi)發(fā)前后端完全分離項(xiàng)目; 文筆及技術(shù)可能在某些方面欠佳,請(qǐng)您指正,共同學(xué)習(xí)進(jìn)步 前端:Vuejs全家桶 后端:...

    noONE 評(píng)論0 收藏0
  • 4.5 Promise/Co yield-博客后端Api-NodeJs+Express+Mysql實(shí)

    摘要:課前學(xué)習(xí)對(duì)象阮一峰廖雪峰從當(dāng)年的回調(diào)地獄到語(yǔ)法糖再到,通過(guò)不斷的進(jìn)化來(lái)更好的從代碼層面同步方式寫異步操作下面以語(yǔ)法糖為例介紹如何實(shí)現(xiàn)首先寫個(gè)基于 Promise 課前學(xué)習(xí)Promise 對(duì)象 阮一峰http://javascript.ruanyifeng....Promise 廖雪峰https://www.liaoxuefeng.com/w... js從當(dāng)年的回調(diào)地獄、到co語(yǔ)法糖再...

    Tamic 評(píng)論0 收藏0
  • 4.1 開(kāi)發(fā)環(huán)境目錄結(jié)構(gòu)配置文件功能梳理-博客后端Api-NodeJs+Express+Mys

    摘要:從本章開(kāi)始,正式學(xué)習(xí)如何使用搭建一個(gè)博客。但通常我們都會(huì)有許多環(huán)境,如本地開(kāi)發(fā)環(huán)境測(cè)試環(huán)境和線上環(huán)境等,不同的環(huán)境的配置不同,我們不可能每次部署時(shí)都要去修改引用或者。會(huì)根據(jù)環(huán)境變量的不同從當(dāng)前執(zhí)行進(jìn)程目錄下的目錄加載不同的配置文件。 從本章開(kāi)始,正式學(xué)習(xí)如何使用 Nodejs + Express + Mysql 搭建一個(gè)博客。 開(kāi)發(fā)環(huán)境 首先說(shuō)下開(kāi)發(fā)環(huán)境安裝的核心依賴版本: Node....

    DevWiki 評(píng)論0 收藏0
  • 4.2 數(shù)據(jù)庫(kù)表/Sequelize Mysql-博客后端Api-NodeJs+Express+My

    功能梳理完了以后,咱們就可以開(kāi)始數(shù)據(jù)庫(kù)表設(shè)計(jì)了: 數(shù)據(jù)庫(kù)表圖: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打開(kāi)Navicat Premium 創(chuàng)建數(shù)據(jù)庫(kù) blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 課前學(xué)習(xí):1、Sequ...

    nicercode 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<