On this page
สร้างทีละส่วน (ใช้ทุกอย่างที่เรียนมา)
👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ
ลงมือสร้างทีละ feature — โครงสร้างโปรเจกต์ + git + เทสต์ + clean code + DB + API ครบ
ถึงเวลาลงมือ — หัวข้อนี้คือการประกอบทุกบทเข้าด้วยกัน สร้างทีละ feature โดยใช้ workflow ที่นักพัฒนาจริงใช้: branch ต่อ feature, เขียนเทสต์คู่กัน, commit เล็ก ๆ
ตั้งโปรเจกต์
bash
mkdir task-api && cd task-api
python -m venv .venv && source .venv/bin/activate # บท 4
pip install fastapi uvicorn pytest passlib bcrypt
pip freeze > requirements.txt
git init # บท 5
# สร้าง .gitignore: .venv/, __pycache__/, .env, *.dbจัดโครงสร้าง (บท 4, 7)
task-api/
├── src/app/
│ ├── main.py # FastAPI app + routes
│ ├── models.py # Pydantic models
│ ├── db.py # ฐานข้อมูล
│ └── auth.py # hash + token
├── tests/test_tasks.py
├── requirements.txt
└── README.mdWorkflow ต่อ feature
ทำทีละ feature ด้วยวงจรนี้ (บท 5, 6) — แต่ละ feature = branch + โค้ด + เทสต์ + commit
bash
git switch -c feature-auth # branch ต่อ feature (บท 5)
# เขียน auth.py (hash + login) (บท 10)
# เขียน tests/test_auth.py (บท 6)
pytest # เทสต์ผ่านก่อน
git add . && git commit -m "feat: add register/login with hashing"
# merge เข้า main / เปิด PRcommit เล็ก + เทสต์ผ่านก่อน merge
อย่าเขียนทั้งโปรเจกต์รวดเดียวแล้วค่อย commit — ทำทีละ feature, เขียนเทสต์คู่กัน, commit สื่อความหมาย (conventional commits จากบท 5) นี่คือนิสัยที่ทำให้ดูแลโปรเจกต์ได้จริง
เขียนโค้ดสะอาดตั้งแต่ต้น (บท 7)
- ตั้งชื่อสื่อความหมาย, ฟังก์ชันทำอย่างเดียว
- แยก layer: route (บาง) / service (logic) / db
- validate input ทุก endpoint ด้วย Pydantic (บท 2, 10)
- กัน SQL injection ด้วย ? / ORM (บท 9)
สรุปหัวข้อนี้
- ตั้งโปรเจกต์: venv + git + โครงสร้างแยก layer
- ทำทีละ feature: branch → โค้ด → เทสต์ → commit → merge
- ใช้ทุกบท: validation, DB, auth, clean code พร้อมกัน
- commit เล็กสื่อความหมาย + เทสต์ผ่านก่อน merge
แบบฝึกหัด
1) ตั้งโปรเจกต์ + venv + git + โครงสร้างโฟลเดอร์ 2) ทำ feature แรก (auth) ครบ: โค้ด + เทสต์ + commit 3) ทำ CRUD task ต่อด้วย workflow เดียวกัน 4) ตรวจว่าทุก endpoint validate input และกัน injection