2025-06-26 Line 訂單系統-階段B

2025-06-26 Line 訂單系統-階段B

🅱️ 階段 B:後端 API + MySQL

🎯 目標

建立商品與訂單的基本 CRUD API。


🔧 步驟

1️⃣ 建立資料庫連線模組(backend/db.js)

1
2
3
4
5
6
7
8
9
10
import mysql from 'mysql2/promise';
import dotenv from 'dotenv';
dotenv.config();

export const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME,
});

2️⃣ 建立商品 API(backend/routes/products.js)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import express from 'express';
import { pool } from '../db.js';
const router = express.Router();

router.get('/', async (req, res) => {
const [rows] = await pool.query('SELECT * FROM products');
res.json(rows);
});

router.post('/', async (req, res) => {
const { name, price, stock } = req.body;
await pool.query('INSERT INTO products (name, price, stock) VALUES (?, ?, ?)', [name, price, stock]);
res.json({ message: 'Product added' });
});

export default router;

3️⃣ 主伺服器註冊路由(backend/index.js)

1
2
3
4
5
6
7
8
9
10
11
12
13
import express from 'express';
import cors from 'cors';
import dotenv from 'dotenv';
import productRoutes from './routes/products.js';
dotenv.config();

const app = express();
app.use(cors());
app.use(express.json());

app.use('/api/products', productRoutes);

app.listen(3000, () => console.log('API running on port 3000'));

4️⃣ 測試(Postman)

  • GET http://localhost:3000/api/products

  • POST http://localhost:3000/api/products

    1
    { "name": "Latte", "price": 90, "stock": 10 }

🧪 Checkpoint

✅ 能新增、查詢商品
✅ DB 有正確資料


💡 延伸

  • 加入 /api/orders 路由。
  • 寫個 db/init.sql 匯入資料表(你已建立)。