Hì, trước giờ toàn xem ké, học free hoài nên hôm nay cũng viết một bài rồi chia sẽ với mọi người để mọi người ném đá mà rút kinh nghiệm... hì bài này mình viết ở //mrsoi.com rồi chuyển qua nên có thể có một số từ hay một số câu cú không hợp với viblo của mình thì mọi người góp ý nha..
Dựng một API RESTful đơn giản sử dụng Express và MongoDB là bài đầu tiên của blog này của mình... Hì, build ra cái blog rồi để gần tuần mới viết bài đầu tiên thì chắc Khoản là người đầu tiên.. Hì, thật ra thì đang tìm ý tưởng viết thôi... :V :V Mà thôi, bỏ qua vấn đề đó mình sẽ vào vấn đề chính là dựng một API RESTful về quản lý người dùng sử dụng Node nha.. ]]
1. Tạo ứng dụng và cài Dependencies cần thiết:
Kiểm tra nodejs và npm version:
npm -v
#6.0.1
node -v
#v10.1.0
1.1 Khởi tạo ứng dụng:
Tạo thư mục và di chuyển vào thư mục.
mkdir user-api
cd user-api
Khởi tạo project nodejs:
npm init -y
1.2 Cài dependence cần thiết:
Đầu tiên tất nhiên là express để khởi tạo server rồi phải không nào, để tìm hiểu thêm về express các bạn có thể lên trang document chính chủ của nó để tìm hiểu, mình chỉ trình bày sơ qua một số thứ để có thể xây dựng được API thôi.
npm install express --save
Tiếp theo là cài mongoose, và mongoose-auto-increment, một cái giúp kết nối với cơ sở dữ liệu và cái còn lại thì giúp tạo khóa tự động tăng..
npm install mongoose mongoose-auto-increment --save
Cuối cùng là body-parser thần thánh để xử lý request cũng như response dạng json cho express:
npm install body-parser --save
2. Khởi tạo server và kết nối với database.
2.1 Khởi tạo server:
Tạo một file server.js trong thư mục project. và require mấy cái dependence vừa ném cài vào, sau đó mở cổng kết nối server bằng express. Code thì kiểu như thế này:
const express = require['express'];
const bodyParser = require['body-parser']
const app = express[];
const PORT = process.env.PORT || 5000;
app.use[bodyParser.json[]]
app.listen[PORT, [] => console.log[`Listening on ${ PORT }`]];
app.get['/', [req, res] => {
res.send[`Listening on ${ PORT }`];
}]
Sau đó chạy server bằng node server.js và lên trình duyệt mở được như thế này là thành công:
2.2 Kết nối server với mLab /utils/db.js:
Thử tạo một thư mục có tên là utils và tạo một file có tên là db.js nha. [ Đây là cá nhân mình thích tách chức năng nhỏ ra các file nhỏ thôi. ]
Nội dung file kết nối database db.js sẽ có nội dung tương tự như thế này:
var mongoose = require['mongoose'];
const mlabURI = 'mongodb://huynhduckhoan::29560/user-api'
const dbName = 'user-api';
const con = mongoose.connect[mlabURI, [error] => {
if[error]{
console.log["Error " + error];
}else{
console.log["Connected successfully to server"]
}
}];
module.exports = con;
Thêm một đoạn để nhận kết quả kết nối cơ sở dữ liệu vào server.js
const db = require['./utils/db'];
Chạy lại project thì thấy giống như hình là oke.. ]]
Xong mấy bước căn bản rồi đấy, vui lên đi nào.. :V :V
3. Tạo model user: /models/user.js
Một model schema thì của mongoose thì có nội dung tương tự như thế này:
const mongoose = require['mongoose'];
const Schema = mongoose.Schema;
const db = require['../utils/db'];
const autoIncrement = require['mongoose-auto-increment'];
var userSchema = new Schema[{
userID: {
type: Number,
required: true,
unique: true},
email: {
type: String,
required: true,
unique: true},
password: {
type: String,
required: true },
role: {
type: String,
required: true,
default: 'user'},
dateAdded : { type: Date, default: Date.now },
}]
const User = mongoose.model['User', userSchema];
autoIncrement.initialize[mongoose.connection];
userSchema.plugin[autoIncrement.plugin, { model: 'User', field: 'userID' }];
module.exports = {
User
};
đọc code cũng khá là dễ hiểu nên mình không nói gì cho dài thêm bài viết, nếu có thì có đoạn tự động tăng cho userID là đáng nói :
mkdir user-api
cd user-api
0Ở đây, autoIncrement sẽ phải kết nối với mongodb để nếu như userID trong request của client không có thì sẽ tự động chọn một số để tăng lên.
Còn đoạn này sẽ lấy thời gian bây giờ [ Tức lúc thêm ] làm ngày thêm cho user.
mkdir user-api
cd user-api
14. Khởi tạo express router:
Về cơ bản thì router của user nó sẽ có như thế này:
/user | GET | Nhận tất cả thông tin user |
/user | GET | Nhận tất cả thông tin user |
POST | GET | Nhận tất cả thông tin user |
POST | thêm một user | /user/:userID |
POST | thêm một user | /user/:userID |
Lấy thông tin của user có userID
mkdir user-api
cd user-api
2PUT
mkdir user-api
cd user-api
3mkdir user-api
cd user-api
4mkdir user-api
cd user-api
5mkdir user-api
cd user-api
6Cập nhật thông tin user có userID
DELETE
Xóa user có userID
Theo thứ tự mình sẽ lần lượt trình bày đống code có chức năng theo thứ tự nha: