app.use()
आपके एप्लिकेशन के लिए मिडिलवेयर को बाइंड करने का इरादा है । path
एक "है माउंट " या " उपसर्ग " पथ और मिडलवेयर के लिए एक ही पथ पर लागू होते हैं अनुरोध किया है कि सीमित करता है शुरू इसके साथ। इसका उपयोग किसी अन्य एप्लिकेशन को एम्बेड करने के लिए भी किया जा सकता है:
// subapp.js
var express = require('express');
var app = modules.exports = express();
// ...
// server.js
var express = require('express');
var app = express();
app.use('/subapp', require('./subapp'));
// ...
/
" माउंट " पथ के रूप में निर्दिष्ट करके , app.use()
उस किसी भी पथ पर प्रतिक्रिया देगा /
जो इसके साथ शुरू होता है , जो कि उन सभी में से हैं और चाहे वे HTTP वर्ब के हैं:
GET /
PUT /foo
POST /foo/bar
- आदि।
app.get()
दूसरी ओर, एक्सप्रेस ' एप्लिकेशन रूटिंग का हिस्सा है और GET
HTTP वर्जन के साथ अनुरोध किए जाने पर एक विशिष्ट मार्ग से मेल खाने और संभालने के लिए है।
और, आपके उदाहरण के समतुल्य रूटिंग app.use()
वास्तव में होगी:
app.all(/^\/.*/, function (req, res) {
res.send('Hello');
});
( अपडेट: मतभेदों को बेहतर ढंग से प्रदर्शित करने का प्रयास करना। )
रूटिंग विधियाँ, सहित app.get()
, सुविधा विधियाँ हैं जो आपको अधिक सटीक अनुरोधों के लिए प्रतिक्रियाओं को संरेखित करने में मदद करती हैं। वे मापदंडों और जैसी सुविधाओं के लिए समर्थन में भी जोड़ते हैं next('route')
।
प्रत्येक के भीतर app.get()
एक कॉल है app.use()
, तो आप निश्चित रूप से app.use()
सीधे के साथ यह सब कर सकते हैं। लेकिन, ऐसा करने के लिए अक्सर बॉयलरप्लेट कोड की विभिन्न मात्राओं को फिर से लागू करना होगा (शायद अनावश्यक रूप से)।
उदाहरण:
सरल, स्थिर मार्गों के लिए:
app.get('/', function (req, res) {
// ...
});
बनाम
app.use('/', function (req, res, next) {
if (req.method !== 'GET' || req.url !== '/')
return next();
// ...
});
एक ही मार्ग के लिए कई हैंडलर के साथ:
app.get('/', authorize('ADMIN'), function (req, res) {
// ...
});
बनाम
const authorizeAdmin = authorize('ADMIN');
app.use('/', function (req, res, next) {
if (req.method !== 'GET' || req.url !== '/')
return next();
authorizeAdmin(req, res, function (err) {
if (err) return next(err);
// ...
});
});
मापदंडों के साथ:
app.get('/item/:id', function (req, res) {
let id = req.params.id;
// ...
});
बनाम
const pathToRegExp = require('path-to-regexp');
function prepareParams(matches, pathKeys, previousParams) {
var params = previousParams || {};
// TODO: support repeating keys...
matches.slice(1).forEach(function (segment, index) {
let { name } = pathKeys[index];
params[name] = segment;
});
return params;
}
const itemIdKeys = [];
const itemIdPattern = pathToRegExp('/item/:id', itemIdKeys);
app.use('/', function (req, res, next) {
if (req.method !== 'GET') return next();
var urlMatch = itemIdPattern.exec(req.url);
if (!urlMatch) return next();
if (itemIdKeys && itemIdKeys.length)
req.params = prepareParams(urlMatch, itemIdKeys, req.params);
let id = req.params.id;
// ...
});
नोट: इन सुविधाओं का एक्सप्रेस 'कार्यान्वयन इसके और Router
,Layer
Route
में निहित हैं ।