Dưới đây là hướng dẫn chi tiết để phát triển mã API cụ thể hơn và triển khai backend cho Vr9 Platform . Hệ thống sẽ sử dụng Node.js với framework Express.js , kết hợp cơ sở dữ liệu MongoDB để lưu trữ dữ liệu.
1. Cấu trúc dự án
Copy vr9-platform/
├── controllers/ # Xử lý logic cho các API
├── models/ # Mô hình dữ liệu
├── routes/ # Định tuyến API
├── middlewares/ # Các middleware (xác thực, xử lý lỗi, v.v.)
├── config/ # Cấu hình ứng dụng
├── app.js # Điểm khởi đầu ứng dụng
├── package.json # Quản lý dependencies
└── README.md # Hướng dẫn dự án
2. Thiết lập dự án
2.1. Khởi tạo dự án Node.js
Copy mkdir vr9-platform
cd vr9-platform
npm init -y
npm install express mongoose dotenv body-parser cors jsonwebtoken bcryptjs
2.2. Tạo file cấu hình
Tạo file .env
để lưu thông tin môi trường:
Copy PORT=5000
DB_URL=mongodb://localhost:27017/vr9-platform
JWT_SECRET=your_jwt_secret_key
3. Tạo các API cơ bản
3.1. API Đăng ký người dùng
File: controllers/userController.js
Copy const User = require('../models/userModel');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
exports.registerUser = async (req, res) => {
try {
const { name, email, password, phone } = req.body;
const existingUser = await User.findOne({ email });
if (existingUser) return res.status(400).json({ message: "User already exists" });
const hashedPassword = await bcrypt.hash(password, 12);
const newUser = new User({ name, email, password: hashedPassword, phone });
await newUser.save();
const token = jwt.sign({ id: newUser._id }, process.env.JWT_SECRET, { expiresIn: '1h' });
res.status(201).json({ user: newUser, token });
} catch (error) {
res.status(500).json({ message: "Server error" });
}
};
File: models/userModel.js
Copy const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
phone: { type: String },
createdAt: { type: Date, default: new Date() }
});
module.exports = mongoose.model('User', userSchema);
File: routes/userRoutes.js
Copy const express = require('express');
const { registerUser } = require('../controllers/userController');
const router = express.Router();
router.post('/register', registerUser);
module.exports = router;
3.2. API Quản lý Power Card
File: controllers/powerCardController.js
Copy exports.getRewards = async (req, res) => {
const { user_id } = req.params;
try {
// Đây là dữ liệu giả định, thay bằng logic từ cơ sở dữ liệu của bạn
const rewards = {
user_id,
points_balance: 1500,
last_updated: new Date()
};
res.status(200).json(rewards);
} catch (error) {
res.status(500).json({ message: "Server error" });
}
};
File: routes/powerCardRoutes.js
Copy const express = require('express');
const { getRewards } = require('../controllers/powerCardController');
const router = express.Router();
router.get('/rewards/:user_id', getRewards);
module.exports = router;
4. Triển khai Middleware và Kết nối cơ sở dữ liệu
4.1. Middleware xử lý lỗi
File: middlewares/errorHandler.js
Copy module.exports = (err, req, res, next) => {
console.error(err.stack);
res.status(500).json({ message: "An error occurred", error: err.message });
};
4.2. Kết nối MongoDB
File: config/database.js
Copy const mongoose = require('mongoose');
const connectDB = async () => {
try {
await mongoose.connect(process.env.DB_URL, { useNewUrlParser: true, useUnifiedTopology: true });
console.log("MongoDB connected successfully");
} catch (error) {
console.error("MongoDB connection failed", error);
process.exit(1);
}
};
module.exports = connectDB;
5. Khởi chạy ứng dụng
File: app.js
Copy const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const dotenv = require('dotenv');
const connectDB = require('./config/database');
const userRoutes = require('./routes/userRoutes');
const powerCardRoutes = require('./routes/powerCardRoutes');
const errorHandler = require('./middlewares/errorHandler');
dotenv.config();
connectDB();
const app = express();
app.use(cors());
app.use(bodyParser.json());
app.use('/api/v1/user', userRoutes);
app.use('/api/v1/powercard', powerCardRoutes);
app.use(errorHandler);
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`Server running on port ${PORT}`));
6. Triển khai và mở rộng
Triển khai: Dùng Docker hoặc các dịch vụ cloud như AWS , Azure , hoặc Heroku để triển khai ứng dụng.
Mở rộng:
Xây dựng API cho ví Vr9 Token: Quản lý giao dịch token.
Tích hợp API bên thứ ba: Tích hợp cổng thanh toán, dịch vụ vận chuyển.
Theo dõi Logs: Dùng Winston hoặc Datadog để giám sát ứng dụng.
Nếu cần thêm chi tiết hoặc mở rộng phần cụ thể, hãy cho mình biết!
Last updated 3 months ago