10 - สรุป REST API พื้นฐาน
เป้าหมายของบท
Section titled “เป้าหมายของบท”บทนี้สรุปสิ่งที่ทำในภาค REST API ก่อนเข้าสู่ภาคฐานข้อมูล เพื่อให้มั่นใจว่าผู้อ่านเข้าใจ controller, service, HTTP method และการทดสอบ API
สิ่งที่สร้างแล้ว
Section titled “สิ่งที่สร้างแล้ว”ตอนนี้ project ควรมี endpoint:
GET /helloGET /healthGET /versionGET /api/v1/usersGET /api/v1/users/{id}POST /api/v1/usersDELETE /api/v1/users/{id}และควรมี class หลัก:
HelloControllerUserControllerUserServiceUserFlow ที่ควรเข้าใจ
Section titled “Flow ที่ควรเข้าใจ”ตอนเรียก:
POST /api/v1/usersflow คือ:
Postman -> UserController.createUser() -> UserService.createUser() -> List<User> -> JSON responseสิ่งที่ยังเป็นข้อจำกัด
Section titled “สิ่งที่ยังเป็นข้อจำกัด”ระบบตอนนี้ยังเป็น training version:
- ข้อมูลหายเมื่อ restart
- ยังไม่มี validation
- ยังไม่มี DTO
- ยังไม่มี exception handler
- ยังไม่มี database
- ยังไม่มี security
ข้อจำกัดเหล่านี้ไม่ได้แปลว่าโค้ดผิด แต่เป็นจุดที่จะค่อย ๆ พัฒนาในภาคถัดไป
Mini Review
Section titled “Mini Review”ตอบคำถามเหล่านี้ก่อนเข้าสู่ภาค database:
@RestControllerทำอะไร@RequestMapping("/api/v1/users")ช่วยอะไร@PathVariable Long idรับค่าจากส่วนไหนของ URL@RequestBody User userรับข้อมูลจากส่วนไหนของ request- ทำไมต้องแยก
UserService - ทำไม in-memory list ไม่เหมาะกับงานจริง
- ถ้า restart application ข้อมูล user จะเกิดอะไรขึ้น
เตรียมเข้าสู่ภาคฐานข้อมูล
Section titled “เตรียมเข้าสู่ภาคฐานข้อมูล”ในภาคถัดไป เราจะเปลี่ยนจาก:
List<User>ไปเป็น:
PostgreSQL + Spring Data JPAและเพิ่ม:
UserRepository extends JpaRepository<User, Long>Controller จะยังคล้ายเดิม แต่ service จะเรียก repository แทน list
Checkpoint ก่อนจบภาค
Section titled “Checkpoint ก่อนจบภาค”ตรวจให้ครบ:
- รัน app ได้
- สร้าง user ผ่าน Postman ได้
- อ่าน user ทั้งหมดได้
- อ่าน user ตาม id ได้
- ลบ user ได้
- เข้าใจว่า controller กับ service ต่างกันอย่างไร
แบบฝึกหัดท้ายบท
Section titled “แบบฝึกหัดท้ายบท”วาด flow ของ GET /api/v1/users/{id} โดยแยกเป็นกล่อง:
Postman -> UserController -> UserService -> List<User>จากนั้นเขียนอธิบายเอง 3-5 บรรทัดว่าแต่ละกล่องทำหน้าที่อะไร