ติดตั้ง Express และจัดโครงสร้างเซิร์ฟเวอร์แรกของคุณด้วยเราต์ พารามิเตอร์ URL และมิดเดิลแวร์
เปิดบทเรียนนี้ใน Kodokonคุณรู้จักวิธีเริ่มต้นเซิร์ฟเวอร์ด้วยมอดูล http ที่มาในตัวอยู่แล้ว ทุกอย่างในนั้นต้องทำเองด้วยมือ ตั้งแต่การอ่าน URL ไปจนถึงการประกอบเฮดเดอร์ Express คือเฟรมเวิร์กที่ทำให้การพัฒนาเว็บฝั่ง Node เป็นมาตรฐานเดียวกัน ทั้งการจัดเราต์ มิดเดิลแวร์ และ API ที่กระชับ โดยไม่ปิดบังรายละเอียดใด ๆ ของโปรโตคอล มาสร้างโปรเจกต์แล้วติดตั้งมันกัน
mkdir kodokon-api
cd kodokon-api
npm init -y
npm install expressเพิ่มคุณสมบัติ type ที่มีค่าเป็น module ลงใน package.json ของคุณ ทั้งโปรเจกต์จะใช้ ES module จากนั้นสร้างไฟล์ server.js เพียงไม่กี่บรรทัดก็เพียงพอสำหรับเซิร์ฟเวอร์ที่ทำงานได้ คุณสร้างแอปพลิเคชัน ประกาศเราต์หนึ่งเส้น แล้วฟังที่พอร์ตหนึ่ง
import express from "express";
const app = express();
app.get("/", (req, res) => {
res.send("Kodokon API online");
});
app.listen(3000, () => {
console.log("http://localhost:3000");
});เราต์คือการจับคู่เมท็อด HTTP และเส้นทาง (path) เข้ากับฟังก์ชันหนึ่ง ส่วนแบบไดนามิกจะประกาศด้วยเครื่องหมายทวิภาค (colon) ใน /users/:id ค่าจะอยู่ใน req.params.id ส่วนพารามิเตอร์คิวรี (?q=node) จะปรากฏใน req.query จงจำความแตกต่างนี้ไว้ เส้นทางระบุตัวทรัพยากร ส่วนคิวรีสตริงช่วยกรองรายละเอียดของคำขอ
app.get("/users/:id", (req, res) => {
const { id } = req.params;
res.json({ id, name: "User " + id });
});
app.get("/search", (req, res) => {
const { q } = req.query;
res.json({ query: q ?? "" });
});มิดเดิลแวร์ (middleware) คือฟังก์ชันที่ทำงานระหว่างจังหวะที่คำขอมาถึงกับเราต์ของคุณ ลายเซ็นของมันคือ (req, res, next) มันสามารถเพิ่มข้อมูลให้ req ตอบกลับโดยตรง หรือส่งต่อด้วย next() โดยพื้นฐานแล้ว Express ก็คือสายโซ่ของมิดเดิลแวร์นั่นเอง ทั้งการบันทึกล็อก การยืนยันตัวตน และการแปลงเนื้อความ (body) ตัวนี้จะบันทึกล็อกทุกคำขอพร้อมระยะเวลาที่ใช้
app.use((req, res, next) => {
const start = Date.now();
res.on("finish", () => {
const ms = Date.now() - start;
console.log(`${req.method} ${req.url} ${ms}ms`);
});
next();
});/users/:id คุณจะอ่านค่าของ id ได้จากที่ไหน?req.query.idreq.params.idreq.body.idnext() ทำอะไร?package.json เพื่อใช้ไวยากรณ์ import ใน Node.js?type ที่ตั้งค่าเป็น moduleesm ที่ตั้งค่าเป็น true