middleware ใน ExpressJS

Middleware ใน ExpressJS คือฟังก์ชันที่ทำงานก่อนหรือหลังเส้นทางที่กำหนดไว้ Middleware สามารถใช้เพื่อเพิ่มคุณสมบัติให้กับแอปพลิเคชัน ExpressJS ได้หลากหลาย เช่น การตรวจสอบสิทธิ์ การบันทึก การปรับปรุงประสิทธิภาพ และอื่นๆ

Middleware ใน ExpressJS เป็นฟังก์ชันที่รับสามอาร์กิวเมนต์:

  • รีเควส: รีเควสคือออบเจ็กต์ที่เก็บข้อมูลเกี่ยวกับคำขอ HTTP
  • เรสปอนส์: เรสปอนส์คือออบเจ็กต์ที่เก็บข้อมูลเกี่ยวกับคำตอบ HTTP
  • ถัดไป: ถัดไปเป็นฟังก์ชันที่เรียกใช้ middleware ถัดไปใน stack

ตัวอย่างเช่น โค้ดต่อไปนี้จะกำหนด middleware ที่บันทึกคำขอ HTTP ทั้งหมด:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const express = require('express');

const app = express();

app.use((req, res, next) => {
console.log('Received request:', req.method, req.url);
next();
});

app.get('/', (req, res) => {
res.send('Hello, World!');
});

app.listen(3000, () => {
console.log('Server started on port 3000');
});

เมื่อคุณรันโค้ดนี้ คุณสามารถไปที่ http://localhost:3000 เพื่อดูข้อความ “Hello, World!” และบันทึกคำขอ HTTP ทั้งหมด

คุณยังสามารถใช้ middleware เพื่อตรวจสอบสิทธิ์ผู้ใช้ก่อนเข้าถึงทรัพยากร:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
const express = require('express');
const auth = require('./auth');

const app = express();

app.use(auth.checkAuth);

app.get('/', (req, res) => {
res.send('Hello, World!');
});

app.listen(3000, () => {
console.log('Server started on port 3000');
});

โค้ดนี้จะใช้ middleware auth.checkAuth() เพื่อตรวจสอบสิทธิ์ผู้ใช้ก่อนเข้าถึงทรัพยากร เมื่อคุณรันโค้ดนี้ คุณจะไม่สามารถเข้าถึงทรัพยากรได้จนกว่าคุณจะผ่านการตรวจสอบสิทธิ์

ExpressJS มี middleware ในตัวมากมายที่คุณสามารถใช้เพื่อเพิ่มคุณสมบัติให้กับแอปพลิเคชันของคุณได้ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ middleware ในตัวได้จากเอกสารประกอบของ ExpressJS

นอกจากนี้ คุณยังสามารถเขียน middleware ของคุณเองได้อีกด้วย ในการทำเช่นนี้ ให้สร้างฟังก์ชันที่ตรงตามข้อกำหนดของ middleware และเรียกใช้ฟังก์ชัน app.use() เพื่อกำหนดเส้นทางการรับส่งข้อมูลไปยัง middleware ของคุณ