middleware ใน node.js

Middleware ใน Node.js เป็นฟังก์ชันหรือโค้ดที่ทำงานร่วมกับแอปพลิเคชัน Express.js หรือโดยทั่วไปแล้วกับเซิร์ฟเวอร์ HTTP ใน Node.js เพื่อประมวลผลข้อมูลก่อนที่จะถึงตัวคอนโทรลเลอร์หรือเส้นทาง (route) หลัก หน้าที่หลักของ Middleware คือการจัดการข้อมูลและคำขอที่ถูกส่งมายังแอปพลิเคชันของคุณ โดยมีลักษณะการทำงานเป็นลูกโซ่ (chain) โดย Middleware สามารถใช้ในการดำเนินการต่าง ๆ เช่น:

  1. Logging Middleware: ใช้สำหรับบันทึกข้อมูลการร้องขอที่เข้ามาหรือออกไปจากแอปพลิเคชัน เพื่อเป็นเครื่องมือในการตรวจสอบและบัugอกข้อมูลการทำงานของแอปพลิเคชัน.

  2. Authentication Middleware: ใช้สำหรับตรวจสอบความถูกต้องของข้อมูลการร้องขอและความถูกต้องของผู้ใช้ โดยที่จะให้ผ่านไปยังคอนโทรลเลอร์เมื่อผู้ใช้ผ่านการตรวจสอบการพิสูจน์ตัวตน.

  3. Error Handling Middleware: ใช้สำหรับจัดการข้อผิดพลาดที่เกิดขึ้นในระหว่างการดำเนินการ โดยรับข้อผิดพลาดและส่งการตอบกลับที่เหมาะสมเพื่อบอกว่ามีข้อผิดพลาดเกิดขึ้น.

  4. สิทธิ์การเข้าถึง (Authorization) Middleware: ใช้สำหรับตรวจสอบสิทธิ์การเข้าถึงข้อมูลหรือการกระทำในแอปพลิเคชัน โดยที่จะตรวจสอบการอนุญาตก่อนที่ผู้ใช้จะเข้าถึงข้อมูลหรือการกระทำนั้น ๆ.

  5. Compression Middleware: ใช้สำหรับบีบอัดเนื้อหาก่อนส่งไปยังผู้ใช้ เพื่อลดการใช้งานแบนด์วิดธ์และเพิ่มประสิทธิภาพในการโหลดเว็บ.

  6. การจัดการไฟล์และรูปแบบอื่น ๆ: Middleware สามารถใช้ในการจัดการไฟล์ที่ถูกอัปโหลด หรือรูปแบบอื่น ๆ ของข้อมูลก่อนบันทึกลงฐานข้อมูลหรือประมวลผลต่อไป.

เพื่อใช้ Middleware ใน Express.js คุณสามารถใช้ app.use() เพื่อเพิ่ม Middleware ลงในแอปพลิเคชันของคุณ:

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

// Middleware ตัวอย่าง
app.use((req, res, next) => {
// โค้ด Middleware ที่นี่
console.log('Middleware ทำงาน');
next(); // เรียก Middleware ถัดไป
});

// เส้นทางหลัก
app.get('/', (req, res) => {
res.send('สวัสดี, Express.js');
});

app.listen(3000, () => {
console.log('เซิร์ฟเวอร์ทำงานที่พอร์ต 3000');
});

ในตัวอย่างนี้ Middleware ทำงานก่อนที่จะถึงเส้นทางหลัก และคุณสามารถเพิ่ม Middleware เพิ่มเติมโดยเรียก app.use() ต่อไปในโค้ด Express.js ของคุณ.

Middleware เป็นส่วนสำคัญในการจัดการการร้องขอและการตอบกลับในแอปพลิเคชัน Node.js และ Express.js เพื่อทำให้การจัดการรหัสเป็นระเบียบและแยกตามหน้าที่ของแต่ละ Middleware ซึ่งช่วยให้โค้ดของคุณสะอาดและง่ายต่อการบำรุงรักษา.