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()
যে পথ থেকে শুরু হবে তার প্রতিক্রিয়া জানাবে /
, যেগুলি সমস্তই এবং এইচটিটিপি ক্রিয়াকলাপ নির্বিশেষে:
GET /
PUT /foo
POST /foo/bar
- প্রভৃতি
app.get()
অন্যদিকে, এক্সপ্রেসের অ্যাপ্লিকেশন রুটিংয়ের অংশ এবং এটি GET
এইচটিটিপি ক্রিয়াকলাপের সাথে অনুরোধ করা হলে একটি নির্দিষ্ট রুট মেলাতে এবং পরিচালনা করার উদ্দেশ্যে করা হয় :
এবং, আপনার উদাহরণের সমতুল্য রাউটিংটি হ'ল app.use()
:
app.all(/^\/.*/, function (req, res) {
res.send('Hello');
});
( আপডেট: পার্থক্যগুলি আরও ভালভাবে প্রদর্শনের চেষ্টা করা হচ্ছে ))
এই রাউটিং পদ্ধতিগুলি সহ app.get()
সুবিধামত পদ্ধতি যা আপনাকে অনুরোধগুলির প্রতিক্রিয়াগুলিকে আরও সঠিকভাবে সারিবদ্ধ করতে সহায়তা করে help তারা প্যারামিটার এবং বৈশিষ্ট্যের মতো বৈশিষ্ট্যের জন্য সমর্থন যোগ করে 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
।