Trong hướng dẫn này, chúng ta sẽ xem cách xây dựng API RESTful đăng nhập đăng xuất của người dùng bằng Nodejs và Express 4. Chúng tôi sẽ sử dụng Cấu trúc ứng dụng Node Express
Kiểm tra bài đăng liên quan trên Cấu trúc ứng dụng Node Express
Cấu trúc ứng dụng Node Express
Kiểm tra cách kết nối cơ sở dữ liệu MySql bằng Node Express
Cơ sở dữ liệu MySql với Node Express
Vì vậy, trước tiên, hãy bắt đầu với việc xây dựng cấu trúc ứng dụng
Xây dựng cấu trúc ứng dụng nút
Theo kiến trúc thư mục nhanh của nút để xây dựng API RESTful
thư mục
|___package.json
|
|___app.js
|
|___controller
| |__index.js
| |__users.js
|
|___models
| |__users
| | |__login.js
| | |__logout.js
| |__db.js
# Nút Express 4
Đối với api đăng nhập và đăng xuất, chúng tôi sẽ sử dụng phương thức POST của RESTful Api. Khi nó gửi yêu cầu đến máy chủ. Đăng nhập api sẽ lấy dữ liệu từ cơ sở dữ liệu
Cài đặt phụ thuộc
Vì vậy, hãy bắt đầu với việc cài đặt các phụ thuộc
Chúng tôi sẽ sử dụng các mô-đun nút sau để xử lý phiên
- Nút Express 4
- trình phân tích nội dung
- MySql
Cài đặt phụ thuộc thông qua lệnh sau
$ npm install
bưu kiện. json
{
"name": "expapp",
"version": "1.0.0",
"description": "",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"async": "^1.5.2",
"body-parser": "^1.14.1",
"express": "^4.13.3",
"express-session": "^1.12.1",
"http-proxy": "^1.12.0",
"mysql": "^2.9.0",
"node-mysql": "^0.4.2",
}
}
Khởi tạo và yêu cầu
Đầu tiên sẽ bao gồm các mô-đun nút yêu cầu
Thực hiện kết nối cơ sở dữ liệu của MySql bằng NodeJS express 4
NHÌN THẤY. Kết nối cơ sở dữ liệu Mysql trong NodeJS
ứng dụng. js
var express = require['express'];
var app = express[];
var bodyParser = require['body-parser'];
var session = require['express-session'];
var db = require['./models/db.js'];
app.use[bodyParser.json[]];
app.use[bodyParser.urlencoded[{
extended: true
}]];// Body parser use JSON data
if[GLOBAL.SQLpool === undefined]{
GLOBAL.SQLpool = db.createPool[]; //create a global sql pool connection
}
app.use[require['./controllers']];
app.listen['3000', function[]{
console.log["Connected on port 3000."];
}];
Thư mục điều khiển
Bộ điều khiển xác định các tuyến ứng dụng của bạn và logic của chúng. Bộ điều khiển sẽ xử lý các yêu cầu web, cung cấp các mẫu của bạn cho người dùng và tương tác với các mô hình của bạn để xử lý và truy xuất dữ liệu. Đó là chất keo kết nối và kiểm soát ứng dụng web của bạn
Tệp chỉ mục bộ điều khiển kiểm soát tất cả các tệp trong thư mục hiện tại và xuất sang các mô hình
/bộ điều khiển/chỉ mục. js
var express = require['express']
, router = express.Router[];
router.use['/api/users', require['./users']];
module.exports = router;
Api đăng nhập
Trước tiên, chúng tôi sẽ xây dựng api đăng nhập cho người dùng đã đăng ký. hãy bắt đầu với /controller/users. js
/bộ điều khiển/người dùng. js
var express = require['express'],
router = express.Router[],
signup = require['../models/users/login.js'];
router.post['/login', function[req, res] {
login.loginUser[req, res, function[err, data] {
if [err] {
res.json[{ 'error': true, 'message': 'Error logged in' }];
} else {
res.json[{ 'success': true, 'data': data }];
}
}];
}];
module.exports = router;
/bộ điều khiển/người dùng ở đâu. js kiểm soát phiên đăng nhập
Đăng nhập Models Directory
Các mô hình là các tệp nơi bạn tương tác với cơ sở dữ liệu của mình. Chúng chứa tất cả các phương thức và chức năng sẽ xử lý dữ liệu của bạn. Điều này sẽ tạo một phiên đăng nhập cho người dùng
/mô hình/người dùng/đăng nhập. js
var mysql = require["../db.js"],
mysqlPool = mysql.createPool[];
/**
* Defines login operations.
* @class
*/
var login = function[]{};
/**
* Authenticate user.
* @Function
* @param callback
*/
login.prototype.loginUser = function[req, res, callback]{
var nowDate = new Date[].toISOString[].slice[0, 19].replace['T', ' '],
params = [req.body.email, req.body.password,1],
detailParams = [],
updateParams = [],
loginUserQuery = 'SELECT * FROM users WHERE email = ? AND password = ?',
getDetailQuery = 'SELECT id, email, gender, lastLogin, name, role, state FROM users WHERE id = ?',
updateLastloginTime = 'UPDATE users SET lastLogin = ? WHERE id = ?'; //updates the date of lastlogin field
mysqlPool.getConnection[function[err, connection]{
connection.query[loginUserQuery, params, function[err, rows, fields] {
if[rows.length