உலகளாவிய பார்வையாளர்களுக்காக வலுவான, அளவிடக்கூடிய மற்றும் பராமரிக்கக்கூடிய வலைப் பயன்பாடுகளை உருவாக்க 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 ஆல் சேர்க்கப்பட்டது (எ.கா., நிலையான கோப்புகளை வழங்க
express.static
). - மூன்றாம் தரப்பு மிடில்வேர்: npm தொகுப்புகளிலிருந்து நிறுவப்பட்டது (எ.கா., body-parser, cookie-parser).
மேம்பட்ட மிடில்வேர் வடிவங்கள்
உங்கள் 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!'); // பொருத்தமான நிலை குறியீட்டுடன் பதிலளிக்கவும்
});
பிழை கையாளுதலுக்கான முக்கியக் கருத்துக்கள்:
- பிழைப் பதிவு: பிழைத்திருத்தம் மற்றும் கண்காணிப்புக்காக பிழைகளைப் பதிவு செய்ய ஒரு பதிவு நூலகத்தைப் (எ.கா., Winston, Bunyan) பயன்படுத்தவும். வெவ்வேறு தீவிர நிலைகளை (எ.கா.,
error
,warn
,info
,debug
) பதிவு செய்வதைக் கருத்தில் கொள்ளுங்கள். - நிலை குறியீடுகள்: வாடிக்கையாளருக்கு பிழையின் தன்மையைத் தெரிவிக்க பொருத்தமான HTTP நிலை குறியீடுகளை (எ.கா., 400 தவறான கோரிக்கைக்கு, 401 அங்கீகரிக்கப்படாததற்கு, 500 உள் சேவையகப் பிழைக்கு) திருப்பியளிக்கவும்.
- பிழைச் செய்திகள்: வாடிக்கையாளருக்கு தகவலறிந்த, அதே சமயம் பாதுகாப்பான, பிழைச் செய்திகளை வழங்கவும். பதிலில் முக்கியமான தகவல்களை வெளிப்படுத்துவதைத் தவிர்க்கவும். பயனருக்கு ஒரு பொதுவான செய்தியைத் திருப்பியளிக்கும் போது, உள்நாட்டில் சிக்கல்களைக் கண்காணிக்க ஒரு தனித்துவமான பிழைக் குறியீட்டைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
- மையப்படுத்தப்பட்ட பிழை கையாளுதல்: சிறந்த அமைப்பு மற்றும் பராமரிப்புக்காக ஒரு பிரத்யேக மிடில்வேர் செயல்பாட்டில் பிழை கையாளுதலைக் குழுவாக்கவும். வெவ்வேறு பிழை சூழ்நிலைகளுக்கு தனிப்பயன் பிழை வகுப்புகளை உருவாக்கவும்.
2. அங்கீகாரம் மற்றும் அங்கீகரிப்பு மிடில்வேர்
உங்கள் API-ஐப் பாதுகாப்பதும், முக்கியமான தரவைப் பாதுகாப்பதும் மிக முக்கியம். அங்கீகாரம் பயனரின் அடையாளத்தைச் சரிபார்க்கிறது, அதே நேரத்தில் அங்கீகரிப்பு ஒரு பயனர் என்ன செய்ய அனுமதிக்கப்படுகிறார் என்பதைத் தீர்மானிக்கிறது.
அங்கீகார உத்திகள்:
- JSON வலை டோக்கன்கள் (JWT): API-களுக்கு ஏற்ற, ஒரு பிரபலமான நிலையற்ற அங்கீகார முறை. வெற்றிகரமான உள்நுழைவின் மீது சேவையகம் வாடிக்கையாளருக்கு ஒரு JWT-ஐ வழங்குகிறது. வாடிக்கையாளர் பின்னர் இந்த டோக்கனை அடுத்தடுத்த கோரிக்கைகளில் சேர்க்கிறார்.
jsonwebtoken
போன்ற நூலகங்கள் பொதுவாகப் பயன்படுத்தப்படுகின்றன. - அமர்வுகள்: குக்கீகளைப் பயன்படுத்தி பயனர் அமர்வுகளைப் பராமரிக்கவும். இது வலைப் பயன்பாடுகளுக்கு ஏற்றது, ஆனால் JWT-களை விட குறைவாக அளவிடக்கூடியதாக இருக்கும்.
express-session
போன்ற நூலகங்கள் அமர்வு நிர்வாகத்தை எளிதாக்குகின்றன. - OAuth 2.0: பரவலாக ஏற்றுக்கொள்ளப்பட்ட ஒரு ஒப்படைக்கப்பட்ட அங்கீகாரத் தரம், பயனர்கள் தங்கள் நற்சான்றிதழ்களை நேரடியாகப் பகிராமல் தங்கள் ஆதாரங்களுக்கான அணுகலை வழங்க அனுமதிக்கிறது. (எ.கா., Google, Facebook உடன் உள்நுழைதல்). குறிப்பிட்ட OAuth உத்திகளுடன்
passport.js
போன்ற நூலகங்களைப் பயன்படுத்தி OAuth ஓட்டத்தைச் செயல்படுத்தவும்.
அங்கீகரிப்பு உத்திகள்:
- பங்கு-அடிப்படையிலான அணுகல் கட்டுப்பாடு (RBAC): பயனர்களுக்கு பாத்திரங்களை (எ.கா., நிர்வாகி, ஆசிரியர், பயனர்) ஒதுக்கி, இந்தப் பாத்திரங்களின் அடிப்படையில் அனுமதிகளை வழங்கவும்.
- பண்பு-அடிப்படையிலான அணுகல் கட்டுப்பாடு (ABAC): அணுகலைத் தீர்மானிக்க பயனர், ஆதாரம் மற்றும் சூழலின் பண்புகளைப் பயன்படுத்தும் ஒரு நெகிழ்வான அணுகுமுறை.
உதாரணம் (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}` });
});
முக்கியமான பாதுகாப்புக் கருத்துக்கள்:
- நற்சான்றிதழ்களின் பாதுகாப்பான சேமிப்பு: கடவுச்சொற்களை ஒருபோதும் சாதாரண உரையில் சேமிக்க வேண்டாம். bcrypt அல்லது Argon2 போன்ற வலுவான கடவுச்சொல் ஹாஷிங் வழிமுறைகளைப் பயன்படுத்தவும்.
- HTTPS: வாடிக்கையாளர் மற்றும் சேவையகத்திற்கு இடையேயான தகவல்தொடர்பை குறியாக்கம் செய்ய எப்போதும் HTTPS-ஐப் பயன்படுத்தவும்.
- உள்ளீட்டு சரிபார்ப்பு: SQL ஊசி மற்றும் குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) போன்ற பாதுகாப்பு பாதிப்புகளைத் தடுக்க அனைத்து பயனர் உள்ளீடுகளையும் சரிபார்க்கவும்.
- வழக்கமான பாதுகாப்பு தணிக்கைகள்: சாத்தியமான பாதிப்புகளைக் கண்டறிந்து நிவர்த்தி செய்ய வழக்கமான பாதுகாப்பு தணிக்கைகளை நடத்தவும்.
- சூழல் மாறிகள்: முக்கியமான தகவல்களை (API விசைகள், தரவுத்தள நற்சான்றிதழ்கள், ரகசிய விசைகள்) உங்கள் குறியீட்டில் கடினமாக குறியிடுவதற்குப் பதிலாக சூழல் மாறிகளாக சேமிக்கவும். இது உள்ளமைவு நிர்வாகத்தை எளிதாக்குகிறது மற்றும் சிறந்த நடைமுறைப் பாதுகாப்பை ஊக்குவிக்கிறது.
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);
விகித வரம்பிடலுக்கான தனிப்பயனாக்குதல் விருப்பங்கள் பின்வருமாறு:
- IP முகவரி-அடிப்படையிலான விகித வரம்பிடல்: மிகவும் பொதுவான அணுகுமுறை.
- பயனர்-அடிப்படையிலான விகித வரம்பிடல்: பயனர் அங்கீகாரம் தேவை.
- கோரிக்கை முறை-அடிப்படையிலான விகித வரம்பிடல்: குறிப்பிட்ட HTTP முறைகளை (எ.கா., POST கோரிக்கைகள்) வரம்பிடவும்.
- தனிப்பயன் சேமிப்பு: பல சேவையக நிகழ்வுகளில் சிறந்த அளவிடுதலுக்காக விகித வரம்பு தகவலை ஒரு தரவுத்தளத்தில் (எ.கா., Redis, MongoDB) சேமிக்கவும்.
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) பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்:
- பதிவு நிலைகள்: பதிவுச் செய்திகளை அவற்றின் தீவிரத்தன்மையின் அடிப்படையில் வகைப்படுத்த வெவ்வேறு பதிவு நிலைகளைப் (எ.கா.,
debug
,info
,warn
,error
) பயன்படுத்தவும். - பதிவு சுழற்சி: பதிவு கோப்பு அளவை நிர்வகிக்கவும் வட்டு இடப் சிக்கல்களைத் தடுக்கவும் பதிவு சுழற்சியைச் செயல்படுத்தவும்.
- மையப்படுத்தப்பட்ட பதிவுசெய்தல்: எளிதான கண்காணிப்பு மற்றும் பகுப்பாய்வுக்காக பதிவுகளை ஒரு மையப்படுத்தப்பட்ட பதிவு சேவைக்கு (எ.கா., ELK stack (Elasticsearch, Logstash, Kibana), Splunk) அனுப்பவும்.
6. கோரிக்கை சரிபார்ப்பு மிடில்வேர்
தரவு ஒருமைப்பாட்டை உறுதிப்படுத்தவும், எதிர்பாராத நடத்தையைத் தடுக்கவும் உள்வரும் கோரிக்கைகளைச் சரிபார்க்கவும். இது கோரிக்கை தலைப்புகள், வினவல் அளவுருக்கள் மற்றும் கோரிக்கை உடல் தரவைச் சரிபார்ப்பதை உள்ளடக்கியிருக்கலாம்.
கோரிக்கை சரிபார்ப்புக்கான நூலகங்கள்:
- Joi: திட்ட வரைபடங்களை வரையறுப்பதற்கும் தரவைச் சரிபார்ப்பதற்கும் ஒரு சக்திவாய்ந்த மற்றும் நெகிழ்வான சரிபார்ப்பு நூலகம்.
- Ajv: ஒரு வேகமான JSON திட்ட சரிபார்ப்பான்.
- Express-validator: Express உடன் எளிதாகப் பயன்படுத்த validator.js-ஐ உள்ளடக்கிய எக்ஸ்பிரஸ் மிடில்வேர்களின் தொகுப்பு.
உதாரணம் (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: 'பயனர் வெற்றிகரமாக உருவாக்கப்பட்டார்' });
});
கோரிக்கை சரிபார்ப்புக்கான சிறந்த நடைமுறைகள்:
- திட்ட-அடிப்படையிலான சரிபார்ப்பு: உங்கள் தரவின் எதிர்பார்க்கப்படும் கட்டமைப்பு மற்றும் தரவு வகைகளைக் குறிப்பிட திட்டங்களை வரையறுக்கவும்.
- பிழை கையாளுதல்: சரிபார்ப்பு தோல்வியுற்றால் வாடிக்கையாளருக்கு தகவலறிந்த பிழைச் செய்திகளைத் திருப்பியளிக்கவும்.
- உள்ளீட்டு சுத்திகரிப்பு: குறுக்கு-தள ஸ்கிரிப்டிங் (XSS) போன்ற பாதிப்புகளைத் தடுக்க பயனர் உள்ளீட்டை சுத்திகரிக்கவும். உள்ளீட்டு சரிபார்ப்பு *என்ன* ஏற்றுக்கொள்ளத்தக்கது என்பதில் கவனம் செலுத்தும் அதே வேளையில், சுத்திகரிப்பு தீங்கு விளைவிக்கும் கூறுகளை அகற்ற உள்ளீடு *எவ்வாறு* குறிப்பிடப்படுகிறது என்பதில் கவனம் செலுத்துகிறது.
- மையப்படுத்தப்பட்ட சரிபார்ப்பு: குறியீடு நகலெடுப்பதைத் தவிர்க்க மறுபயன்பாட்டு சரிபார்ப்பு மிடில்வேர் செயல்பாடுகளை உருவாக்கவும்.
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-க்கான முக்கியக் கருத்துக்கள்:
- மூலம்: அங்கீகரிக்கப்படாத அணுகலைத் தடுக்க அனுமதிக்கப்பட்ட மூலங்களை (களங்களை) குறிப்பிடவும். பொதுவாக அனைத்து மூலங்களையும் (
*
) அனுமதிப்பதை விட குறிப்பிட்ட மூலங்களை அனுமதிப்பட்டியலில் சேர்ப்பது பாதுகாப்பானது. - முறைகள்: அனுமதிக்கப்பட்ட HTTP முறைகளை (எ.கா., GET, POST, PUT, DELETE) வரையறுக்கவும்.
- தலைப்புகள்: அனுமதிக்கப்பட்ட கோரிக்கை தலைப்புகளைக் குறிப்பிடவும்.
- முன்-பறப்பு கோரிக்கைகள்: சிக்கலான கோரிக்கைகளுக்கு (எ.கா., தனிப்பயன் தலைப்புகள் அல்லது GET, POST, HEAD தவிர்த்த பிற முறைகள்), உண்மையான கோரிக்கை அனுமதிக்கப்பட்டுள்ளதா என்பதைச் சரிபார்க்க உலாவி ஒரு முன்-பறப்பு கோரிக்கையை (OPTIONS) அனுப்பும். முன்-பறப்பு கோரிக்கை வெற்றிபெற சேவையகம் பொருத்தமான 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('இது புதிய அம்சம்!');
});
இந்த உதாரணம், அம்சக் கொடிகளின் அடிப்படையில் குறிப்பிட்ட வழிகளுக்கான அணுகலைக் கட்டுப்படுத்த ஒரு தனிப்பயன் மிடில்வேரை எவ்வாறு பயன்படுத்துவது என்பதைக் காட்டுகிறது. இது மென்பொருள் உருவாக்கத்தில் ஒரு பொதுவான நடைமுறையான, முழுமையாகச் சரிபார்க்கப்படாத குறியீட்டை மீண்டும் பயன்படுத்தாமலோ அல்லது மாற்றாமலோ அம்ச வெளியீடுகளைக் கட்டுப்படுத்த டெவலப்பர்களை அனுமதிக்கிறது.
உலகளாவிய பயன்பாடுகளுக்கான சிறந்த நடைமுறைகள் மற்றும் பரிசீலனைகள்
- செயல்திறன்: உங்கள் மிடில்வேரை செயல்திறனுக்காக, குறிப்பாக அதிக போக்குவரத்து உள்ள பயன்பாடுகளில் மேம்படுத்தவும். CPU-தீவிர செயல்பாடுகளின் பயன்பாட்டைக் குறைக்கவும். தற்காலிக சேமிப்பு உத்திகளைப் பயன்படுத்துவதைக் கருத்தில் கொள்ளுங்கள்.
- அளவிடுதல்: உங்கள் மிடில்வேரை கிடைமட்டமாக அளவிட வடிவமைக்கவும். அமர்வுத் தரவை நினைவகத்தில் சேமிப்பதைத் தவிர்க்கவும்; Redis அல்லது Memcached போன்ற விநியோகிக்கப்பட்ட தற்காலிக சேமிப்பைப் பயன்படுத்தவும்.
- பாதுகாப்பு: உள்ளீட்டு சரிபார்ப்பு, அங்கீகாரம், அங்கீகரிப்பு மற்றும் பொதுவான வலை பாதிப்புகளுக்கு எதிரான பாதுகாப்பு உள்ளிட்ட பாதுகாப்பு சிறந்த நடைமுறைகளைச் செயல்படுத்தவும். உங்கள் பார்வையாளர்களின் சர்வதேச தன்மையைக் கருத்தில் கொண்டு இது மிகவும் முக்கியமானது.
- பராமரிப்பு: சுத்தமான, நன்கு ஆவணப்படுத்தப்பட்ட மற்றும் மட்டு குறியீட்டை எழுதவும். தெளிவான பெயரிடும் மரபுகளைப் பயன்படுத்தவும் மற்றும் ஒரு சீரான குறியீட்டு பாணியைப் பின்பற்றவும். எளிதான பராமரிப்பு மற்றும் புதுப்பிப்புகளுக்கு வசதியாக உங்கள் மிடில்வேரை மட்டுப்படுத்தவும்.
- சோதிக்கக்கூடிய தன்மை: உங்கள் மிடில்வேர் சரியாகச் செயல்படுவதை உறுதிப்படுத்தவும், சாத்தியமான பிழைகளை முன்கூட்டியே பிடிக்கவும் அலகு சோதனைகள் மற்றும் ஒருங்கிணைப்பு சோதனைகளை எழுதவும். உங்கள் மிடில்வேரை பல்வேறு சூழல்களில் சோதிக்கவும்.
- சர்வதேசமயமாக்கல் (i18n) மற்றும் உள்ளூர்மயமாக்கல் (l10n): உங்கள் பயன்பாடு பல மொழிகள் அல்லது பிராந்தியங்களை ஆதரித்தால் சர்வதேசமயமாக்கல் மற்றும் உள்ளூர்மயமாக்கலைக் கருத்தில் கொள்ளுங்கள். பயனர் அனுபவத்தை மேம்படுத்த உள்ளூர்மயமாக்கப்பட்ட பிழைச் செய்திகள், உள்ளடக்கம் மற்றும் வடிவமைப்பை வழங்கவும். i18next போன்ற கட்டமைப்புகள் i18n முயற்சிகளை எளிதாக்கும்.
- நேர மண்டலங்கள் மற்றும் தேதி/நேர கையாளுதல்: நேர மண்டலங்களைக் கவனத்தில் கொள்ளுங்கள் மற்றும் தேதி/நேரத் தரவை கவனமாகக் கையாளவும், குறிப்பாக உலகளாவிய பார்வையாளர்களுடன் பணிபுரியும் போது. தேதி/நேர கையாளுதலுக்கு Moment.js அல்லது Luxon போன்ற நூலகங்களைப் பயன்படுத்தவும் அல்லது, முன்னுரிமையாக, நேர மண்டல விழிப்புணர்வுடன் புதிய Javascript உள்ளமைக்கப்பட்ட Date பொருள் கையாளுதலைப் பயன்படுத்தவும். உங்கள் தரவுத்தளத்தில் தேதிகள்/நேரங்களை UTC வடிவத்தில் சேமித்து, அவற்றைக் காட்டும்போது பயனரின் உள்ளூர் நேர மண்டலத்திற்கு மாற்றவும்.
- நாணய கையாளுதல்: உங்கள் பயன்பாடு நிதி பரிவர்த்தனைகளைக் கையாண்டால், நாணயங்களைச் சரியாகக் கையாளவும். பொருத்தமான நாணய வடிவமைப்பைப் பயன்படுத்தவும் மற்றும் பல நாணயங்களை ஆதரிப்பதைக் கருத்தில் கொள்ளுங்கள். உங்கள் தரவு சீராகவும் துல்லியமாகவும் பராமரிக்கப்படுவதை உறுதிசெய்யவும்.
- சட்ட மற்றும் ஒழுங்குமுறை இணக்கம்: வெவ்வேறு நாடுகள் அல்லது பிராந்தியங்களில் உள்ள சட்ட மற்றும் ஒழுங்குமுறைத் தேவைகளைப் (எ.கா., GDPR, CCPA) பற்றி அறிந்திருங்கள். இந்த விதிமுறைகளுக்கு இணங்கத் தேவையான நடவடிக்கைகளைச் செயல்படுத்தவும்.
- அணுகல்தன்மை: உங்கள் பயன்பாடு ஊனமுற்ற பயனர்களுக்கு அணுகக்கூடியதாக இருப்பதை உறுதிசெய்யவும். WCAG (வலை உள்ளடக்க அணுகல்தன்மை வழிகாட்டுதல்கள்) போன்ற அணுகல்தன்மை வழிகாட்டுதல்களைப் பின்பற்றவும்.
- கண்காணிப்பு மற்றும் எச்சரிக்கை: சிக்கல்களை விரைவாகக் கண்டறிந்து பதிலளிக்க விரிவான கண்காணிப்பு மற்றும் எச்சரிக்கையைச் செயல்படுத்தவும். சேவையக செயல்திறன், பயன்பாட்டுப் பிழைகள் மற்றும் பாதுகாப்பு அச்சுறுத்தல்களைக் கண்காணிக்கவும்.
முடிவுரை
மேம்பட்ட மிடில்வேர் வடிவங்களில் தேர்ச்சி பெறுவது, வலுவான, பாதுகாப்பான மற்றும் அளவிடக்கூடிய Express.js பயன்பாடுகளை உருவாக்குவதற்கு மிக முக்கியமானது. இந்த வடிவங்களைத் திறம்படப் பயன்படுத்துவதன் மூலம், செயல்பாட்டுக்கு மட்டுமல்லாமல், பராமரிக்கக்கூடிய மற்றும் உலகளாவிய பார்வையாளர்களுக்கு நன்கு பொருத்தமான பயன்பாடுகளை நீங்கள் உருவாக்கலாம். உங்கள் மேம்பாட்டு செயல்முறை முழுவதும் பாதுகாப்பு, செயல்திறன் மற்றும் பராமரிப்புக்கு முன்னுரிமை அளிக்க நினைவில் கொள்ளுங்கள். கவனமான திட்டமிடல் மற்றும் செயலாக்கத்துடன், உலகெங்கிலும் உள்ள பயனர்களின் தேவைகளைப் பூர்த்தி செய்யும் வெற்றிகரமான வலைப் பயன்பாடுகளை உருவாக்க Express.js மிடில்வேரின் சக்தியை நீங்கள் பயன்படுத்திக் கொள்ளலாம்.
மேலும் படிக்க: