3.5. Triển khai endpoint CRUD cho To do list App
Trong phần này, chúng ta sẽ triển khai các endpoint CRUD cho ứng dụng to-do list.
Phân tích:
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)
Xoá công việc (DELETE)
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.
Triển khai:
Đầ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);
Thêm mới một công việc:
// 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 một công việc
// 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' });
});
});
Xoá một công việc
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