தமிழ்

உலகளாவிய பார்வையாளர்களுக்காக வலுவான, அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய வலைப் பயன்பாடுகளை உருவாக்க Express.js இல் உள்ள மேம்பட்ட மிடில்வேர் வடிவங்களை ஆராயுங்கள். பிழை கையாளுதல், அங்கீகாரம், விகித வரம்பு மற்றும் பலவற்றைப் பற்றி அறிக.

Express.js மிடில்வேர்: அளவிடக்கூடிய பயன்பாடுகளுக்கான மேம்பட்ட வடிவங்களில் தேர்ச்சி பெறுதல்

Express.js, Node.js-க்கான ஒரு வேகமான, கருத்தில்லாத, மிகக்குறைந்த வலைக் கட்டமைப்பு, வலைப் பயன்பாடுகள் மற்றும் API-களை உருவாக்குவதற்கான ஒரு மூலக்கல்லாகும். அதன் மையத்தில் மிடில்வேர் என்ற சக்திவாய்ந்த கருத்து உள்ளது. இந்த வலைப்பதிவு இடுகை மேம்பட்ட மிடில்வேர் வடிவங்களை ஆராய்கிறது, உலகளாவிய பார்வையாளர்களுக்கு ஏற்ற வலுவான, அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய பயன்பாடுகளை உருவாக்குவதற்கான அறிவையும் நடைமுறை எடுத்துக்காட்டுகளையும் உங்களுக்கு வழங்குகிறது. பிழை கையாளுதல், அங்கீகாரம், அங்கீகரிப்பு, விகித வரம்பிடல் மற்றும் நவீன வலைப் பயன்பாடுகளை உருவாக்குவதற்கான பிற முக்கியமான அம்சங்களுக்கான நுட்பங்களை நாங்கள் ஆராய்வோம்.

மிடில்வேரைப் புரிந்துகொள்ளுதல்: அடித்தளம்

Express.js இல் உள்ள மிடில்வேர் செயல்பாடுகள், கோரிக்கை பொருள் (req), பதில் பொருள் (res), மற்றும் பயன்பாட்டின் கோரிக்கை-பதில் சுழற்சியில் உள்ள அடுத்த மிடில்வேர் செயல்பாடு ஆகியவற்றை அணுகக்கூடிய செயல்பாடுகள் ஆகும். மிடில்வேர் செயல்பாடுகள் பல்வேறு பணிகளைச் செய்ய முடியும், அவற்றுள்:

மிடில்வேர் அடிப்படையில் ஒரு குழாய் போன்றது. மிடில்வேரின் ஒவ்வொரு பகுதியும் அதன் குறிப்பிட்ட செயல்பாட்டைச் செய்கிறது, பின்னர், விருப்பப்படி, சங்கிலியில் உள்ள அடுத்த மிடில்வேருக்கு கட்டுப்பாட்டை அனுப்புகிறது. இந்த மட்டு அணுகுமுறை குறியீடு மறுபயன்பாடு, கவலைகளைப் பிரித்தல் மற்றும் தூய்மையான பயன்பாட்டுக் கட்டமைப்பை ஊக்குவிக்கிறது.

மிடில்வேரின் உடற்கூறியல்

ஒரு பொதுவான மிடில்வேர் செயல்பாடு இந்த கட்டமைப்பைப் பின்பற்றுகிறது:

function myMiddleware(req, res, next) {
  // செயல்களைச் செய்யவும்
  // உதாரணம்: கோரிக்கை தகவலைப் பதிவு செய்யவும்
  console.log(`Request: ${req.method} ${req.url}`);

  // அடுக்கில் உள்ள அடுத்த மிடில்வேரை அழைக்கவும்
  next();
}

next() செயல்பாடு மிக முக்கியமானது. இது தற்போதைய மிடில்வேர் தனது வேலையை முடித்துவிட்டது என்பதையும், அடுத்த மிடில்வேர் செயல்பாட்டிற்கு கட்டுப்பாடு அனுப்பப்பட வேண்டும் என்பதையும் Express.js-க்கு சமிக்ஞை செய்கிறது. next() அழைக்கப்படாவிட்டால், கோரிக்கை ஸ்தம்பித்துவிடும், மற்றும் பதில் ஒருபோதும் அனுப்பப்படாது.

மிடில்வேர் வகைகள்

Express.js பல வகையான மிடில்வேர்களை வழங்குகிறது, ஒவ்வொன்றும் ஒரு தனித்துவமான நோக்கத்திற்கு உதவுகிறது:

மேம்பட்ட மிடில்வேர் வடிவங்கள்

உங்கள் Express.js பயன்பாட்டின் செயல்பாடு, பாதுகாப்பு மற்றும் பராமரிப்பை கணிசமாக மேம்படுத்தக்கூடிய சில மேம்பட்ட வடிவங்களை ஆராய்வோம்.

1. பிழை கையாளுதல் மிடில்வேர்

நம்பகமான பயன்பாடுகளை உருவாக்க திறமையான பிழை கையாளுதல் மிக முக்கியமானது. Express.js ஒரு பிரத்யேக பிழை-கையாளுதல் மிடில்வேர் செயல்பாட்டை வழங்குகிறது, இது மிடில்வேர் அடுக்கில் *கடைசியாக* வைக்கப்படுகிறது. இந்த செயல்பாடு நான்கு வாதங்களை எடுக்கிறது: (err, req, res, next).

இதோ ஒரு உதாரணம்:

// பிழை கையாளுதல் மிடில்வேர்
app.use((err, req, res, next) => {
  console.error(err.stack); // பிழைத்திருத்தத்திற்காக பிழையைப் பதிவு செய்யவும்
  res.status(500).send('Something broke!'); // பொருத்தமான நிலை குறியீட்டுடன் பதிலளிக்கவும்
});

பிழை கையாளுதலுக்கான முக்கியக் கருத்துக்கள்:

2. அங்கீகாரம் மற்றும் அங்கீகரிப்பு மிடில்வேர்

உங்கள் API-ஐப் பாதுகாப்பதும், முக்கியமான தரவைப் பாதுகாப்பதும் மிக முக்கியம். அங்கீகாரம் பயனரின் அடையாளத்தைச் சரிபார்க்கிறது, அதே நேரத்தில் அங்கீகரிப்பு ஒரு பயனர் என்ன செய்ய அனுமதிக்கப்படுகிறார் என்பதைத் தீர்மானிக்கிறது.

அங்கீகார உத்திகள்:

அங்கீகரிப்பு உத்திகள்:

உதாரணம் (JWT அங்கீகாரம்):

const jwt = require('jsonwebtoken');
const secretKey = 'YOUR_SECRET_KEY'; // வலுவான, சூழல் மாறி-அடிப்படையிலான விசையுடன் மாற்றவும்

// JWT டோக்கன்களைச் சரிபார்க்கும் மிடில்வேர்
function authenticateToken(req, res, next) {
  const authHeader = req.headers['authorization'];
  const token = authHeader && authHeader.split(' ')[1];

  if (token == null) return res.sendStatus(401); // அங்கீகரிக்கப்படாதது

  jwt.verify(token, secretKey, (err, user) => {
    if (err) return res.sendStatus(403); // தடைசெய்யப்பட்டது
    req.user = user; // கோரிக்கையுடன் பயனர் தரவை இணைக்கவும்
    next();
  });
}

// அங்கீகாரத்தால் பாதுகாக்கப்பட்ட எடுத்துக்காட்டு வழி
app.get('/profile', authenticateToken, (req, res) => {
  res.json({ message: `Welcome, ${req.user.username}` });
});

முக்கியமான பாதுகாப்புக் கருத்துக்கள்:

3. விகித வரம்பிடல் மிடில்வேர்

விகித வரம்பிடல் உங்கள் API-ஐ துஷ்பிரயோகம், சேவை மறுப்பு (DoS) தாக்குதல்கள் மற்றும் அதிகப்படியான ஆதார நுகர்வு ஆகியவற்றிலிருந்து பாதுகாக்கிறது. இது ஒரு குறிப்பிட்ட நேர சாளரத்திற்குள் ஒரு வாடிக்கையாளர் செய்யக்கூடிய கோரிக்கைகளின் எண்ணிக்கையைக் கட்டுப்படுத்துகிறது.

express-rate-limit போன்ற நூலகங்கள் பொதுவாக விகித வரம்பிடலுக்குப் பயன்படுத்தப்படுகின்றன. helmet தொகுப்பையும் கருத்தில் கொள்ளுங்கள், இது பலவிதமான பிற பாதுகாப்பு மேம்பாடுகளுடன் அடிப்படை விகித வரம்பிடல் செயல்பாட்டையும் உள்ளடக்கும்.

உதாரணம் (express-rate-limit ஐப் பயன்படுத்துதல்):

const rateLimit = require('express-rate-limit');

const limiter = rateLimit({
  windowMs: 15 * 60 * 1000, // 15 நிமிடங்கள்
  max: 100, // ஒவ்வொரு IP-ஐயும் windowMs ஒன்றுக்கு 100 கோரிக்கைகளுக்கு வரம்பிடவும்
  message: 'இந்த IP-யிலிருந்து பல கோரிக்கைகள், 15 நிமிடங்களுக்குப் பிறகு மீண்டும் முயற்சிக்கவும்',
});

// குறிப்பிட்ட வழிகளுக்கு விகித வரம்பை பயன்படுத்தவும்
app.use('/api/', limiter);

// மாற்றாக, அனைத்து வழிகளுக்கும் பயன்படுத்தவும் (பொதுவாக அனைத்து போக்குவரத்தும் சமமாக நடத்தப்படாவிட்டால் விரும்பத்தகாதது)
// app.use(limiter);

விகித வரம்பிடலுக்கான தனிப்பயனாக்குதல் விருப்பங்கள் பின்வருமாறு:

4. கோரிக்கை உடல் பாகுபடுத்தல் மிடில்வேர்

Express.js, இயல்பாக, கோரிக்கை உடலைப் பாகுபடுத்துவதில்லை. JSON மற்றும் URL-குறியிடப்பட்ட தரவு போன்ற வெவ்வேறு உடல் வடிவங்களைக் கையாள நீங்கள் மிடில்வேரைப் பயன்படுத்த வேண்டும். பழைய செயலாக்கங்கள் `body-parser` போன்ற தொகுப்புகளைப் பயன்படுத்தியிருக்கலாம் என்றாலும், Express v4.16 முதல் கிடைக்கும் Express-இன் உள்ளமைக்கப்பட்ட மிடில்வேரைப் பயன்படுத்துவதே தற்போதைய சிறந்த நடைமுறையாகும்.

உதாரணம் (உள்ளமைக்கப்பட்ட மிடில்வேரைப் பயன்படுத்துதல்):

app.use(express.json()); // JSON-குறியிடப்பட்ட கோரிக்கை உடல்களை பாகுபடுத்துகிறது
app.use(express.urlencoded({ extended: true })); // URL-குறியிடப்பட்ட கோரிக்கை உடல்களை பாகுபடுத்துகிறது

`express.json()` மிடில்வேர் JSON பேலோடுகளுடன் உள்வரும் கோரிக்கைகளைப் பாகுபடுத்துகிறது மற்றும் பாகுபடுத்தப்பட்ட தரவை `req.body` இல் கிடைக்கச் செய்கிறது. `express.urlencoded()` மிடில்வேர் URL-குறியிடப்பட்ட பேலோடுகளுடன் உள்வரும் கோரிக்கைகளைப் பாகுபடுத்துகிறது. `{ extended: true }` விருப்பம் செறிவான பொருள்கள் மற்றும் வரிசைகளைப் பாகுபடுத்த அனுமதிக்கிறது.

5. பதிவுசெய்தல் மிடில்வேர்

திறமையான பதிவுசெய்தல் உங்கள் பயன்பாட்டைப் பிழைதிருத்தம் செய்தல், கண்காணித்தல் மற்றும் தணிக்கை செய்வதற்கு அவசியமானது. மிடில்வேர் கோரிக்கைகள் மற்றும் பதில்களை இடைமறித்து தொடர்புடைய தகவல்களைப் பதிவுசெய்ய முடியும்.

உதாரணம் (எளிய பதிவுசெய்தல் மிடில்வேர்):

const morgan = require('morgan'); // ஒரு பிரபலமான HTTP கோரிக்கை பதிப்பான்

app.use(morgan('dev')); // 'dev' வடிவத்தில் கோரிக்கைகளைப் பதிவு செய்யவும்

// மற்றொரு உதாரணம், தனிப்பயன் வடிவமைப்பு
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url} - ${new Date().toISOString()}`);
  next();
});

உற்பத்தி சூழல்களுக்கு, பின்வருவனவற்றுடன் ஒரு வலுவான பதிவு நூலகத்தைப் (எ.கா., Winston, Bunyan) பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்:

6. கோரிக்கை சரிபார்ப்பு மிடில்வேர்

தரவு ஒருமைப்பாட்டை உறுதிப்படுத்தவும், எதிர்பாராத நடத்தையைத் தடுக்கவும் உள்வரும் கோரிக்கைகளைச் சரிபார்க்கவும். இது கோரிக்கை தலைப்புகள், வினவல் அளவுருக்கள் மற்றும் கோரிக்கை உடல் தரவைச் சரிபார்ப்பதை உள்ளடக்கியிருக்கலாம்.

கோரிக்கை சரிபார்ப்புக்கான நூலகங்கள்:

உதாரணம் (Joi ஐப் பயன்படுத்துதல்):

const Joi = require('joi');

const userSchema = Joi.object({
  username: Joi.string().min(3).max(30).required(),
  email: Joi.string().email().required(),
  password: Joi.string().min(6).required(),
});

function validateUser(req, res, next) {
  const { error } = userSchema.validate(req.body, { abortEarly: false }); // அனைத்து பிழைகளையும் பெற abortEarly-ஐ false என அமைக்கவும்

  if (error) {
    return res.status(400).json({ errors: error.details.map(err => err.message) }); // விரிவான பிழைச் செய்திகளைத் திருப்பியளிக்கவும்
  }

  next();
}

app.post('/users', validateUser, (req, res) => {
  // பயனர் தரவு செல்லுபடியானது, பயனர் உருவாக்கத்துடன் தொடரவும்
  res.status(201).json({ message: 'பயனர் வெற்றிகரமாக உருவாக்கப்பட்டார்' });
});

கோரிக்கை சரிபார்ப்புக்கான சிறந்த நடைமுறைகள்:

7. பதில் சுருக்க மிடில்வேர்

வாடிக்கையாளருக்கு அனுப்புவதற்கு முன்பு பதில்களைச் சுருக்கி உங்கள் பயன்பாட்டின் செயல்திறனை மேம்படுத்தவும். இது மாற்றப்படும் தரவின் அளவைக் குறைக்கிறது, இதன் விளைவாக வேகமான ஏற்றுதல் நேரங்கள் ஏற்படுகின்றன.

உதாரணம் (சுருக்க மிடில்வேரைப் பயன்படுத்துதல்):

const compression = require('compression');

app.use(compression()); // பதில் சுருக்கத்தை (எ.கா., gzip) இயக்கவும்

compression மிடில்வேர் வாடிக்கையாளரின் Accept-Encoding தலைப்பின் அடிப்படையில், தானாகவே gzip அல்லது deflate ஐப் பயன்படுத்தி பதில்களைச் சுருக்குகிறது. இது நிலையான சொத்துக்கள் மற்றும் பெரிய JSON பதில்களை வழங்குவதற்கு குறிப்பாகப் பயனளிக்கிறது.

8. CORS (குறுக்கு-மூல வளப் பகிர்வு) மிடில்வேர்

உங்கள் API அல்லது வலைப் பயன்பாடு வெவ்வேறு களங்களிலிருந்து (மூலங்களிலிருந்து) கோரிக்கைகளை ஏற்க வேண்டியிருந்தால், நீங்கள் CORS-ஐ உள்ளமைக்க வேண்டும். இது குறுக்கு-மூல கோரிக்கைகளை அனுமதிக்க பொருத்தமான HTTP தலைப்புகளை அமைப்பதை உள்ளடக்கியது.

உதாரணம் (CORS மிடில்வேரைப் பயன்படுத்துதல்):

const cors = require('cors');

const corsOptions = {
  origin: 'https://your-allowed-domain.com',
  methods: 'GET,POST,PUT,DELETE',
  allowedHeaders: 'Content-Type,Authorization'
};

app.use(cors(corsOptions));

// அல்லது அனைத்து மூலங்களையும் அனுமதிக்க (மேம்பாட்டிற்காக அல்லது உள் API-களுக்கு -- எச்சரிக்கையுடன் பயன்படுத்தவும்!)
// app.use(cors());

CORS-க்கான முக்கியக் கருத்துக்கள்:

9. நிலையான கோப்பு வழங்கல்

Express.js நிலையான கோப்புகளை (எ.கா., HTML, CSS, JavaScript, படங்கள்) வழங்குவதற்கு உள்ளமைக்கப்பட்ட மிடில்வேரை வழங்குகிறது. இது பொதுவாக உங்கள் பயன்பாட்டின் முன்-முனையை வழங்குவதற்குப் பயன்படுத்தப்படுகிறது.

உதாரணம் (express.static ஐப் பயன்படுத்துதல்):

app.use(express.static('public')); // 'public' கோப்பகத்திலிருந்து கோப்புகளை வழங்கவும்

உங்கள் நிலையான சொத்துக்களை public கோப்பகத்தில் (அல்லது நீங்கள் குறிப்பிடும் வேறு எந்த கோப்பகத்திலும்) வைக்கவும். Express.js பின்னர் தானாகவே இந்தக் கோப்புகளை அவற்றின் கோப்புப் பாதைகளின் அடிப்படையில் வழங்கும்.

10. குறிப்பிட்ட பணிகளுக்கான தனிப்பயன் மிடில்வேர்

விவாதிக்கப்பட்ட வடிவங்களைத் தாண்டி, உங்கள் பயன்பாட்டின் குறிப்பிட்ட தேவைகளுக்கு ஏற்றவாறு தனிப்பயன் மிடில்வேரை நீங்கள் உருவாக்கலாம். இது சிக்கலான தர்க்கத்தை இணைக்கவும் குறியீடு மறுபயன்பாட்டை ஊக்குவிக்கவும் உங்களை அனுமதிக்கிறது.

உதாரணம் (அம்சக் கொடிகளுக்கான தனிப்பயன் மிடில்வேர்):

// ஒரு உள்ளமைவு கோப்பின் அடிப்படையில் அம்சங்களை இயக்க/முடக்க தனிப்பயன் மிடில்வேர்
const featureFlags = require('./config/feature-flags.json');

function featureFlagMiddleware(featureName) {
  return (req, res, next) => {
    if (featureFlags[featureName] === true) {
      next(); // அம்சம் இயக்கப்பட்டது, தொடரவும்
    } else {
      res.status(404).send('அம்சம் கிடைக்கவில்லை'); // அம்சம் முடக்கப்பட்டது
    }
  };
}

// பயன்பாட்டு உதாரணம்
app.get('/new-feature', featureFlagMiddleware('newFeatureEnabled'), (req, res) => {
  res.send('இது புதிய அம்சம்!');
});

இந்த உதாரணம், அம்சக் கொடிகளின் அடிப்படையில் குறிப்பிட்ட வழிகளுக்கான அணுகலைக் கட்டுப்படுத்த ஒரு தனிப்பயன் மிடில்வேரை எவ்வாறு பயன்படுத்துவது என்பதைக் காட்டுகிறது. இது மென்பொருள் உருவாக்கத்தில் ஒரு பொதுவான நடைமுறையான, முழுமையாகச் சரிபார்க்கப்படாத குறியீட்டை மீண்டும் பயன்படுத்தாமலோ அல்லது மாற்றாமலோ அம்ச வெளியீடுகளைக் கட்டுப்படுத்த டெவலப்பர்களை அனுமதிக்கிறது.

உலகளாவிய பயன்பாடுகளுக்கான சிறந்த நடைமுறைகள் மற்றும் பரிசீலனைகள்

முடிவுரை

மேம்பட்ட மிடில்வேர் வடிவங்களில் தேர்ச்சி பெறுவது, வலுவான, பாதுகாப்பான மற்றும் அளவிடக்கூடிய Express.js பயன்பாடுகளை உருவாக்குவதற்கு மிக முக்கியமானது. இந்த வடிவங்களைத் திறம்படப் பயன்படுத்துவதன் மூலம், செயல்பாட்டுக்கு மட்டுமல்லாமல், பராமரிக்கக்கூடிய மற்றும் உலகளாவிய பார்வையாளர்களுக்கு நன்கு பொருத்தமான பயன்பாடுகளை நீங்கள் உருவாக்கலாம். உங்கள் மேம்பாட்டு செயல்முறை முழுவதும் பாதுகாப்பு, செயல்திறன் மற்றும் பராமரிப்புக்கு முன்னுரிமை அளிக்க நினைவில் கொள்ளுங்கள். கவனமான திட்டமிடல் மற்றும் செயலாக்கத்துடன், உலகெங்கிலும் உள்ள பயனர்களின் தேவைகளைப் பூர்த்தி செய்யும் வெற்றிகரமான வலைப் பயன்பாடுகளை உருவாக்க Express.js மிடில்வேரின் சக்தியை நீங்கள் பயன்படுத்திக் கொள்ளலாம்.

மேலும் படிக்க: