摘要:路由設(shè)計路由設(shè)計以用戶注冊為例介紹如何閉環(huán)用戶注冊開發(fā)注意點使用郵箱注冊驗證郵箱是否注冊目前真實開發(fā)業(yè)務(wù)大部分都是手機(jī)號注冊,這塊由于沒有購買短信服務(wù)首先,在文件夾下新建上圖中對應(yīng)真實業(yè)務(wù)邏輯現(xiàn)附上業(yè)務(wù)實現(xiàn)代碼加密國際化工具類用戶服務(wù)
路由設(shè)計
路由設(shè)計 以用戶注冊為例介紹如何閉環(huán)
用戶注冊開發(fā)注意點:(1)使用郵箱注冊(2)驗證郵箱是否注冊 【目前真實開發(fā)業(yè)務(wù)大部分都是手機(jī)號注冊,這塊由于沒有購買短信服務(wù)】
首先,在routers文件夾下新建user.js
上圖中checkEmail、reg對應(yīng)真實業(yè)務(wù)邏輯
現(xiàn)附上checkEmail、reg業(yè)務(wù)實現(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 國際化 var utils = require("../libs/utils"); //工具類 var User = require("../models/index").User; //用戶 // var tokenService = require("../services/token"); //token服務(wù) module.exports = { /** * 檢測郵箱是否注冊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, }); }); }, /** * 注冊 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", //先默認(rèn)已激活狀態(tài) //狀態(tài) 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, }); }); }, };【自測環(huán)節(jié)】使用Postman來測試驗證接口正確性
Postman下載
https://www.getpostman.com/
http://chromecj.com/web-devel...
先將項目跑起來
npm run devRESTful API
RESTful API 最佳實踐
http://www.ruanyifeng.com/blo...
Nodejs RESTFul架構(gòu)實踐之a(chǎn)pi篇
https://my.oschina.net/nodeon...
以本項目為例,查詢用戶信息和更新用戶信息接口 可根據(jù)不同請求方式來實踐
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104080.html
摘要:多一個技能多一條出路,祝你在自學(xué)道路上越走越好,掌握自己的核心技能,不只是優(yōu)秀,還要成為不可替代的人 NodeJs+Express+Mysql + Vuejs 項目實戰(zhàn) 最近準(zhǔn)備寫一系列文章,全面講述如何基于NodeJs + Express + Mysql + Vuejs 從零開發(fā)前后端完全分離項目; 文筆及技術(shù)可能在某些方面欠佳,請您指正,共同學(xué)習(xí)進(jìn)步 前端:Vuejs全家桶 后端:...
摘要:課前學(xué)習(xí)對象阮一峰廖雪峰從當(dāng)年的回調(diào)地獄到語法糖再到,通過不斷的進(jìn)化來更好的從代碼層面同步方式寫異步操作下面以語法糖為例介紹如何實現(xiàn)首先寫個基于 Promise 課前學(xué)習(xí)Promise 對象 阮一峰http://javascript.ruanyifeng....Promise 廖雪峰https://www.liaoxuefeng.com/w... js從當(dāng)年的回調(diào)地獄、到co語法糖再...
摘要:從本章開始,正式學(xué)習(xí)如何使用搭建一個博客。但通常我們都會有許多環(huán)境,如本地開發(fā)環(huán)境測試環(huán)境和線上環(huán)境等,不同的環(huán)境的配置不同,我們不可能每次部署時都要去修改引用或者。會根據(jù)環(huán)境變量的不同從當(dāng)前執(zhí)行進(jìn)程目錄下的目錄加載不同的配置文件。 從本章開始,正式學(xué)習(xí)如何使用 Nodejs + Express + Mysql 搭建一個博客。 開發(fā)環(huán)境 首先說下開發(fā)環(huán)境安裝的核心依賴版本: Node....
功能梳理完了以后,咱們就可以開始數(shù)據(jù)庫表設(shè)計了: 數(shù)據(jù)庫表圖: showImg(https://segmentfault.com/img/bVbr9GC?w=1922&h=1140); 首先打開Navicat Premium 創(chuàng)建數(shù)據(jù)庫 blog 配置如下: showImg(https://segmentfault.com/img/bVbr81Y?w=720&h=352); 課前學(xué)習(xí):1、Sequ...
閱讀 1927·2021-11-22 09:34
閱讀 1158·2021-10-09 09:44
閱讀 3051·2021-09-29 09:35
閱讀 3628·2021-09-14 18:01
閱讀 1497·2021-08-16 10:49
閱讀 1097·2019-08-29 14:11
閱讀 861·2019-08-29 12:47
閱讀 3082·2019-08-26 13:47