Trong phần này, chúng ta sẽ triển khai các endpoint CRUD cho ứng dụng to-do list.
Trong ứng dụng này, chúng ta sẽ cần ít nhất 4 endpoint bao gồm:
Xem danh sách các công việc (GET)
Thêm mới một công việc (POST)
Cập nhật một công việc (PUT)
Trong chi tiết triển khai từng endpoint, chúng ta sẽ phân tích xem nó sẽ cần đầu vào, đầu ra, và thao tác đến dữ liệu như thế nào.
Đầu tiên, bạn cần tạo 1 file routers/todos.js để thể hiện các endpoint đã phân tích ở trên.
Xem danh sách các công việc: Lấy ra danh sách các công việc từ CSDL cụ thể là bảng todos
const express = require('express');
const router = express.Router();
const db = require('../database');
// Lấy tất cả các công việc (GET)
router.get('/', (req, res) => {
db.query('SELECT * FROM todos', (err, results) => {
if (err) return res.status(500).send(err);
res.json(results);
});
});
module.exports = router;
Kết nối router vào index.js (app.js)
const todosRouter = require('./routes/todos');
app.use('/todos', todosRouter);
// Tạo mới một công việc (POST)
router.post('/', (req, res) => {
const { title, description, due_date } = req.body;
db.query('INSERT INTO todos (title, description, due_date) VALUES (?, ?, ?)', [title, description, due_date], (err, result) => {
if (err) return res.status(500).send(err);
res.json({ id: result.insertId, title, description, due_date, completed: 0});
});
});
// Cập nhật công việc theo ID (PUT)
router.put('/:id', (req, res) => {
const { title, description, due_date, completed } = req.body;
const { id } = req.params;
db.query('UPDATE todos SET title = ?, description = ?, due_date = ?, completed = ? WHERE id = ?',
[title, description, due_date, completed, id], (err, result) => {
if (err) return res.status(500).send(err);
res.json({ message: 'Todo updated successfully' });
});
});
router.delete('/:id', (req, res) => {
const { id } = req.params;
db.query('DELETE FROM todos WHERE id = ?', [id], (err, result) => {
if (err) return res.status(500).send(err);
res.json({ message: 'Todo deleted successfully' });
});
});
Last updated