Express程式實作
今天我們要以Express框架來實作會員註冊功能,並且包含以下三項規則:
● 登入帳號為email,且不可重複註冊。
● email須符合標準email格式。
● 密碼需先進行加密再存入資料庫,且不可逆。
為了執行第三項功能,請讀者們在專案資料夾中安裝dotenv
套件, 可用來隱藏些敏感性資料。
$ npm install dotenv
後續的API運行測試我們一樣使用Postman來執行。
Express並不會自動幫我們生成Models和Controllers等等資料夾,所以請讀者先辛苦一點,以手動方式新增完成下列檔案結構:
.
├── app.js
├── bin
│ └── www
├── config
│ └── development_config.js
├── controllers
│ └── modify_controller.js
├── models
│ ├── connection_db.js
│ └── register_model.js
├── package.json
├── public
│ ├── images
│ ├── javascripts
│ └── stylesheets
│ └── style.css
├── routes
│ ├── member.js
│ └── users.js
├── sevice
│ └── member_check.js
└── views
├── error.ejs
└── index.ejs
├── .env
└── .gitignore
簡單API運作測試
請將routes/member.js
程式碼改成:
var express = require('express');
var router = express.Router();router.post('/', function(req, res, next) {
console.log(req.body.test)
});module.exports = router;
儲存後$ npm start
開啟專案server,並在Postman中填入下列參數並Send:
- HTTP method: POST
- HTTP url : localhost:3000/
- Body中選擇
x-www-form-urlencoded
- Key: test
- Value: test api
此時即可在console.log
中看到收到的訊息資料為test api
:
設定MySQL連線
請在.env
輸入:
HOST = 'localhost'
DATABASE_USER = 'root'
DATABASE_PASSWORD = ''
DATABASE = 'member'
帳號密碼請依各自的設定填寫。
接著至config/development_config.js
輸入:
require('dotenv').config()module.exports = {
mysql: {
host: process.env.HOST,
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
database: process.env.DATABASE
}
}
然後在.gitignore
輸入:
# dotenv environment variables file
.env
最後在models/connection_db.js
輸入:
// DataBase const config = require('../config/development_config'); const mysqlt = require("mysql"); const connection = mysqlt.createConnection({
host: config.mysql.host,
user: config.mysql.user,
password: config.mysql.password,
database: config.mysql.database
});connection.connect(err => {
if (err) {
console.log('connecting error');
} else {
console.log('connecting success');
}
});module.exports = connection;
建置MVC架構程式內容
先將routes/member.js
改成下列程式碼,並賦予此API一個新的url:
controllers/modify_controller.js
輸入:
models/register_model.js
輸入:
運行並測試:
如此即成功註冊了一個新的使用者!
新增條件 – email不可重複進行註冊
將models/register_model.js
改寫如下:
運行並以重複email註冊,即會回傳警告訊息:
新增條件 — email須符合標準email格式
這邊我們在service/member_check.js
撰寫判斷email格式的規則:
並在controllers/modify_controller.js
加入下列判斷:
運行並以錯誤格式email註冊,即會回傳警告訊息:
新增條件 — 密碼需進行加密再存入資料庫,且不可逆
首先在models
資料夾新增encryption.js
並輸入:
並在controllers/modify_controller.js
中加入加密部分的判斷:
運行並以正確資料註冊,即會回傳成功訊息且密碼已完成加密:
這次的實作就先到這邊,之後有機會會再持續分享相關資訊,謝謝大家,我們下次見囉!