เข้าใจ Middleware ใน Express ผ่านลำดับการเดินทางของ Request
ออกแบบ middleware สำหรับ logging, authentication, validation และ error handling ให้เรียงลำดับถูกต้อง พร้อมหลีกเลี่ยง request ค้างหรือ logic ซ้ำในหลาย route

ภาพรวม
Middleware ใน Express คือด่านตรวจระหว่างทางของ request 🧱
เวลา request เข้ามา มันไม่ได้กระโดดไปถึง route handler ทันทีเสมอ Express จะให้มันเดินผ่าน middleware ตามลำดับที่เราประกาศไว้
middleware หนึ่งตัวรับ req, res, next จะอ่านข้อมูล แก้ req ตอบกลับเอง หรือส่งต่อไปตัวถัดไปก็ได้
app.use((req, res, next) => { console.log(req.method, req.path) next() })
ถ้าเรียก next() request จะไปต่อ ถ้าไม่เรียก และไม่ส่ง response request จะค้างจน timeout นี่คือ bug ที่เจอบ่อยมากในมือใหม่
middleware ใช้ทำอะไรได้บ้าง parse JSON body เช็ก authentication เขียน log ตรวจ rate limit แนบ user ลง req จัดการ CORS
ลำดับสำคัญมาก ถ้า route ถูกประกาศก่อน auth middleware route นั้นอาจไม่ถูกตรวจสิทธิ์ ถ้า error handler วางผิดที่ มันอาจไม่ถูกเรียก
ตัวอย่างลำดับที่มักเจอ app.use(express.json()) app.use(requestLogger) app.use("/api", authMiddleware, apiRouter) app.use(errorHandler)
middleware ที่ดีควรทำหน้าที่เดียว ตัวหนึ่ง parse body ตัวหนึ่งเช็ก token อีกตัวหนึ่ง log request อย่าให้ middleware เดียวทำทุกอย่างจน debug ยาก
ถ้าต้องส่งข้อมูลต่อ เช่น user ที่อ่านจาก JWT ใส่ไว้ใน req.user ได้ แต่ควรตกลง type/shape ให้ทีมรู้ว่า req.user มีอะไรบ้าง
คิดว่า middleware เป็นสายพาน วางผิดลำดับ ของจะไปผิดแผนก วางชัด งานแต่ละจุดจะตรวจสอบง่ายและ reusable ขึ้นมาก 🙂
แนวทางนำไปใช้
- นำแนวคิดจากโพสต์นี้ไปทดลองกับงานจริงของคุณ
- แยกเป็นขั้นตอนเล็ก ๆ แล้วทำทีละส่วน
- บันทึกผลลัพธ์และสิ่งที่เรียนรู้เพื่อต่อยอด
สรุป
ออกแบบ middleware สำหรับ logging, authentication, validation และ error handling ให้เรียงลำดับถูกต้อง พร้อมหลีกเลี่ยง request ค้างหรือ logic ซ้ำในหลาย route