ข้ามไปยังเนื้อหา

Routing

Routing คือกระบวนการตัดสินใจว่า code ส่วนใดจะจัดการ HTTP request ที่เข้ามา โดยพิจารณาจากสอง property ของ request:

  • req.method — HTTP verb เช่น GET, POST, PUT, DELETE
  • req.url — path (และ query string ถ้ามี) เช่น /users, /users/42, /search?q=node

server ของ Node.js มีทั้งสองอย่างให้พร้อม คุณเพียงแค่เขียน logic ที่ map ทั้งสองไปยัง handler

router ที่ง่ายที่สุดคือ chain ของ if statement:

Node.js

Needs the Node.js runtime — open in StackBlitz to run.

เมื่อ URL มี path parameter หรือ query string ให้ใช้ global URL constructor ของ Node เพื่อ parse อย่างสะอาดสะอ้าน ส่ง req.url เป็น argument แรกและ base ปลอมเป็น argument ที่สอง:

Node.js

Needs the Node.js runtime — open in StackBlitz to run.

เมื่อมี route มากกว่าสองสามอัน ควร extract ออกมาเป็น router map pattern นี้คือสิ่งที่ Express ใช้ภายใน:

Node.js

Needs the Node.js runtime — open in StackBlitz to run.

สอง property ของ request object ที่ใช้ตัดสินใจ routing คืออะไร?
`new URL(req.url, "http://localhost")` ให้อะไรคุณ?
router ควรคืน HTTP status code ใดเมื่อไม่มี route ตรงกัน?