एक्सप्रेसजेज में मिडिलवेयर और ऐप का वास्तव में क्या मतलब है?


228

मेरे द्वारा देखे जाने वाले लगभग हर एक्सप्रेस ऐप में app.useमिडलवेयर के लिए एक स्टेटमेंट है, लेकिन मुझे स्पष्ट, संक्षिप्त विवरण नहीं मिला है कि मिडलवेयर वास्तव में क्या है और app.useस्टेटमेंट क्या कर रहा है। यहां तक ​​कि एक्सप्रेस डॉक्स स्वयं इस पर थोड़ा अस्पष्ट हैं। क्या आप मेरे लिए इन अवधारणाओं की व्याख्या कर सकते हैं?


3
संदर्भ के लिए इसी तरह का प्रश्न (यह पहले बनाया गया था): stackoverflow.com/questions/11321635/…
ericsoco

43
^ हा! ये दो प्रश्न टिप्पणियों में एक दूसरे का संदर्भ देते हैं।
जूलियन एच। लैम

17
तो यह एक सर्कुलर संदर्भ है।
स्टीव के।

6
Express.js मिडलवेयर ने इस विषय पर एक महान ब्लॉग पोस्ट का प्रदर्शन किया। यह पहले यहां कॉपी-पेस्ट किया गया था, जो साहित्यिक चोरी है, लेकिन मूल पोस्ट अभी भी वास्तव में उपयोगी है इसलिए मैं यहां से एक लिंक छोड़ता हूं।
तोमटली

1
मैंने एक्सप्रेस.जेएस मिडलवेयर पर एक लेख लिखा। यहाँ लिंक है: nodexplained.com/blog-detail/2017/12/31/…
shrawan_lakhe

जवाबों:


111

मध्यस्थ

मैं एक नई परियोजना में मिडलवेयर की अवधारणा को अलग करने के माध्यम से आधे रास्ते पर हूं।

मिडिलवेयर आपको उन कार्यों के ढेर को परिभाषित करने की अनुमति देता है जिन्हें आपको प्रवाह करना चाहिए। एक्सप्रेस सर्वर स्वयं बिचौलियों के ढेर हैं।

// express
var app = express();
// middleware
var stack = middleware();

तब आप कॉल करके मिडिलवेयर स्टैक में परतें जोड़ सकते हैं .use

// express
app.use(express.static(..));
// middleware
stack.use(function(data, next) {
  next();
});

मिडलवेयर स्टैक में एक परत एक फ़ंक्शन है, जो n पैरामीटर (एक्सप्रेस, reqऔर res) के लिए 2 और एक nextफ़ंक्शन लेता है ।

मिडलवेयर को उम्मीद है कि परत कुछ गणना करेगी, मापदंडों को बढ़ाएगी और फिर कॉल करेगी next

जब तक आप इसे संभाल नहीं लेते तब तक कुछ भी नहीं करता है। एक्सप्रेस हर बार आने वाले HTTP रिक्वेस्ट को सर्वर पर पकड़े जाने पर स्टैक को हैंडल करेगा। मिडलवेयर के साथ आप मैन्युअल रूप से स्टैक को संभालते हैं।

// express, you need to do nothing
// middleware
stack.handle(someData);

एक और पूर्ण उदाहरण:

var middleware = require("../src/middleware.js");

var stack = middleware(function(data, next) {
    data.foo = data.data*2;
    next();
}, function(data, next) {
    setTimeout(function() {
        data.async = true;
        next();
    }, 100)
}, function(data) {
    console.log(data);
});

stack.handle({
    "data": 42
})

व्यक्त शब्दों में, आप बस उन कार्यों के ढेर को परिभाषित करते हैं जिन्हें आप हर आने वाले HTTP अनुरोध के लिए हैंडल करना चाहते हैं।

एक्सप्रेस (कनेक्ट के बजाय) के संदर्भ में आपके पास वैश्विक मिडलवेयर और रूट विशिष्ट मिडलवेयर हैं। इसका मतलब है कि आप हर आने वाले HTTP अनुरोधों के लिए एक मिडलवेयर स्टैक संलग्न कर सकते हैं या केवल इसे HTTP अनुरोधों के साथ संलग्न कर सकते हैं जो एक निश्चित मार्ग के साथ बातचीत करते हैं।

एक्सप्रेस और मिडलवेयर के उन्नत उदाहरण:

// middleware 

var stack = middleware(function(req, res, next) {
    users.getAll(function(err, users) {
        if (err) next(err);
        req.users = users;
        next();  
    });
}, function(req, res, next) {
    posts.getAll(function(err, posts) {
        if (err) next(err);
        req.posts = posts;
        next();
    })
}, function(req, res, next) {
    req.posts.forEach(function(post) {
        post.user = req.users[post.userId];
    });

    res.render("blog/posts", {
        "posts": req.posts
    });
});

var app = express.createServer();

app.get("/posts", function(req, res) {
   stack.handle(req, res); 
});

// express

var app = express.createServer();

app.get("/posts", [
    function(req, res, next) {
        users.getAll(function(err, users) {
            if (err) next(err);
            req.users = users;
            next();  
        });
    }, function(req, res, next) {
        posts.getAll(function(err, posts) {
            if (err) next(err);
            req.posts = posts;
            next();
        })
    }, function(req, res, next) {
        req.posts.forEach(function(post) {
            post.user = req.users[post.userId];
        });

        res.render("blog/posts", {
            "posts": req.posts
        });
    }
], function(req, res) {
   stack.handle(req, res); 
});

4
हम्म ... इस मामले में मिडलवेयर आपकी अपनी लाइब्रेरी या एक्सप्रेस का हिस्सा है?
IZ।

5
ठंडा। मैं अभी भी app.use()वाक्यविन्यास से थोड़ा भ्रमित हूं । मिडलवेयर का वास्तविक रिटर्न मूल्य क्या है और useइसके साथ क्या होता है?
IZ।

9
@iZ उपयोग इसे एक स्टैक में जोड़ता है। तब हर एक अनुरोध ढेर के माध्यम से जाता है।
रेयानोस

7
@ रेयानोस, आपके प्रोजेक्ट, "मिडलवेयर" का लिंक टूट गया है।
ली

1
@ रेयान लेकिन मुझे लगता है कि अभी भी एक्सप्रेस में मिडलवेयर का इस्तेमाल किया जा रहा है? तुम्हारा क्या मतलब है यह nuked है?
टिमो हुओवेंन

60

चीजों को सरल बनाने के बाद, एक वेब सर्वर को एक फ़ंक्शन के रूप में देखा जा सकता है जो एक अनुरोध में लेता है और एक प्रतिक्रिया को आउटपुट करता है। इसलिए यदि आप एक वेब सर्वर को एक फ़ंक्शन के रूप में देखते हैं, तो आप इसे कई टुकड़ों में व्यवस्थित कर सकते हैं और उन्हें छोटे कार्यों में अलग कर सकते हैं ताकि उनकी रचना मूल कार्य हो जाए।

Middlewares छोटे कार्य हैं जिन्हें आप दूसरों के साथ जोड़ सकते हैं और स्पष्ट लाभ यह है कि आप उनका पुन: उपयोग कर सकते हैं।


33

मैं पिछले उत्तर में उल्लेखित कुछ नहीं जोड़ने के लिए एक देर से उत्तर जोड़ता हूं।

अब तक यह स्पष्ट होना चाहिए कि क्लाइंट अनुरोध और सर्वर उत्तर के बीच मिडलवेयर / फंक्शन हैं । स्थैतिक फ़ाइलों या अन्य संसाधनों से जानकारी प्राप्त करने के लिए आवश्यक सबसे सामान्य मिडलवेयर कार्यक्षमता त्रुटि प्रबंधन, डेटाबेस इंटरैक्शन है। मिडलवेयर स्टैक पर जाने के लिए अगले कॉलबैक को बुलाया जाना चाहिए, आप इसे मिडवेवेयर फ़ंक्शन के अंत में देख सकते हैं ताकि प्रवाह में अगले चरण पर जाया जा सके।

आप app.useदृष्टिकोण का उपयोग कर सकते हैं और इस तरह से प्रवाह कर सकते हैं :

var express = require('express'),
    app = express.createServer(),                                                                                                                                                 
    port = 1337;

function middleHandler(req, res, next) {
    console.log("execute middle ware");
    next();
}

app.use(function (req, res, next) {
    console.log("first middle ware");                                                                                                             
    next();
});

app.use(function (req, res, next) {
    console.log("second middle ware");                                                                                                             
    next();
});

app.get('/', middleHandler, function (req, res) {
    console.log("end middleware function");
    res.send("page render finished");
});

app.listen(port);
console.log('start server');

लेकिन आप एक अन्य दृष्टिकोण का भी उपयोग कर सकते हैं और प्रत्येक मिडलवेयर को फ़ंक्शन आर्गुमेंट के रूप में पास कर सकते हैं। यहाँ MooTools Nodejs वेबसाइट का एक उदाहरण दिया गया है जहाँ responseक्लाइंट को वापस भेजे जाने से पहले मिडलेवेयर को ट्विटर, जीथब और ब्लॉग प्रवाह मिलता है। ध्यान दें कि कार्यों को तर्कों के रूप में कैसे पारित किया जाता है app.get('/', githubEvents, twitter, getLatestBlog, function(req, res){। का उपयोग करके app.getकेवल GET अनुरोधों के app.useलिए बुलाया जाएगा , सभी अनुरोधों के लिए बुलाया जाएगा।

// github, twitter & blog feeds
var githubEvents = require('./middleware/githubEvents')({
    org: 'mootools'
});
var twitter = require('./middleware/twitter')();
var blogData = require('./blog/data');
function getLatestBlog(req, res, next){
    blogData.get(function(err, blog) {
        if (err) next(err);
        res.locals.lastBlogPost = blog.posts[0];
        next();
    });
}

// home
app.get('/', githubEvents, twitter, getLatestBlog, function(req, res){
    res.render('index', {
        title: 'MooTools',
        site: 'mootools',
        lastBlogPost: res.locals.lastBlogPost,
        tweetFeed: res.locals.twitter
    });
});

2
मैं एक जवाब के लिए देख रहा था कि क्या Express.js रूट आधारित (राउटर आधारित नहीं) मिडलवेयर माउंटिंग का समर्थन करता है? ऐसा लगता है कि आपने अपने उत्तर में इसे दिखाया है।
सेलुकुक

क्या आप अपने उपरोक्त उदाहरण की व्याख्या कर सकते हैं?, आप app.get (...) में कितने कार्यों में पास हो सकते हैं और उन्हें किस क्रम में बुलाया जाता है?
टान्नर समर्स

2
हाय @TannerSummers, .get()विधि 3 प्रकार के तर्क लेती है: पहला, अंतिम और मध्य वाला। आंतरिक रूप से यह पता चलता है कि यदि 2 से अधिक तर्क हैं और उन (मध्य वाले) का उपयोग मिडलवेयर फ़ंक्शन के रूप में करते हैं, तो उन्हें बाएं से दाएं बुलाते हैं।
सर्जियो

22

एक्सप्रेसज गाइड के पास आपके प्रश्न का बहुत साफ उत्तर है, मैं आपको यह पढ़ने के लिए सलाह देता हूं कि, मैं गाइड का एक छोटा स्निपेट पोस्ट कर रहा हूं, गाइड काफी अच्छा है।

एक्सप्रेस ऐप्स में उपयोग के लिए मिडिलवेयर लिखना

अवलोकन

मिडलवेयर फ़ंक्शंस ऐसे फ़ंक्शंस हैं जिनमें एक्सेस ऑब्जेक्ट ( req ), रेस्पॉन्स ऑब्जेक्ट ( रेस ), और एप्लिकेशन के रिक्वेस्ट-रिस्पॉन्स साइकल में अगला फंक्शन है। अगला फ़ंक्शन एक्सप्रेस राउटर में एक फ़ंक्शन है जिसे जब बुलाया जाता है, तो वर्तमान मिडलवेयर को सफल करने वाले मिडलवेयर को निष्पादित करता है।

मिडिलवेयर फ़ंक्शंस निम्नलिखित कार्य कर सकते हैं:

  • किसी भी कोड को निष्पादित करें।
  • अनुरोध और प्रतिक्रिया ऑब्जेक्ट में परिवर्तन करें।
  • अनुरोध-प्रतिक्रिया चक्र को समाप्त करें।
  • स्टैक में अगले मिडलवेयर को कॉल करें।

यदि वर्तमान मिडलवेयर फ़ंक्शन अनुरोध-प्रतिक्रिया चक्र को समाप्त नहीं करता है, तो उसे अगले मिडलवेयर फ़ंक्शन पर नियंत्रण पास करने के लिए अगला () कॉल करना होगा । अन्यथा, अनुरोध लटका हुआ छोड़ दिया जाएगा।

यहां छवि विवरण दर्ज करें

उदाहरण

यहाँ एक सरल "हैलो वर्ल्ड" एक्सप्रेस एप्लिकेशन का एक उदाहरण है। इस लेख के शेष भाग को परिभाषित करेगा और एप्लिकेशन में दो मिडलवेयर फ़ंक्शंस जोड़ेगा : एक myLogger कहा जाता है जो एक साधारण लॉग संदेश प्रिंट करता है और दूसरा अनुरोध टाइमटाइम 1 जिसे HTTP अनुरोध का टाइमस्टैम्प प्रदर्शित करता है।

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000)   

मिडिलवेयर फ़ंक्शन myLogger

यहाँ "myLogger" नामक एक मिडलवेयर फ़ंक्शन का एक सरल उदाहरण है। यह फ़ंक्शन केवल "लॉगगेड" प्रिंट करता है जब एप्लिकेशन के लिए एक अनुरोध इसके माध्यम से गुजरता है। मिडलवेयर फंक्शन को MyLogger नामक वैरिएबल को असाइन किया गया है।

var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

ऊपर कॉल को अगले पर ध्यान दें () । इस फ़ंक्शन को कॉल करना ऐप में अगले मिडलवेयर फ़ंक्शन को आमंत्रित करता है। अगले () समारोह Node.js या एक्सप्रेस एपीआई का एक हिस्सा नहीं है, लेकिन तीसरा तर्क है कि मिडलवेयर कार्य करने के लिए पारित कर दिया जाता है। अगले () समारोह कुछ भी नाम दिया जा सकता है, लेकिन प्रथा के अनुसार यह हमेशा "अगला" नाम दिया है। भ्रम से बचने के लिए, हमेशा इस सम्मेलन का उपयोग करें।

मिडलवेयर फ़ंक्शन को लोड करने के लिए, मिडवेयर फ़ंक्शन को निर्दिष्ट करते हुए app.use () को कॉल करें । उदाहरण के लिए, निम्नलिखित कोड myLogger मिडिलवेयर फ़ंक्शन को रूट पथ (/) के रूट से पहले लोड करता है ।

var express = require('express')
var app = express()

var myLogger = function (req, res, next) {
  console.log('LOGGED')
  next()
}

app.use(myLogger)

app.get('/', function (req, res) {
  res.send('Hello World!')
})

app.listen(3000)

जब भी एप्लिकेशन को अनुरोध प्राप्त होता है, तो वह टर्मिनल पर "लॉगगेड" संदेश भेजता है।

मिडलवेयर लोडिंग का क्रम महत्वपूर्ण है: मिडिलवेयर फ़ंक्शंस जो पहले लोड होते हैं, पहले भी निष्पादित होते हैं।

यदि रूट रूट के बाद myLogger लोड किया जाता है, तो अनुरोध कभी नहीं पहुंचता है और ऐप "लॉगगेड" को प्रिंट नहीं करता है, क्योंकि रूट पथ का मार्ग हैंडलर अनुरोध-प्रतिक्रिया चक्र को समाप्त करता है।

मिडलवेयर फ़ंक्शन myLogger बस एक संदेश प्रिंट करता है, फिर अगले () फ़ंक्शन को कॉल करके स्टैक में अगले मिडलवेयर फ़ंक्शन के अनुरोध पर गुजरता है ।


  1. इस पोस्ट में केवल myLogger मिडिलवेयर शामिल होगा, आगे की पोस्ट के लिए आप मूल एक्सप्रेस गाइड पर जा सकते हैं


1
बहुत अच्छी व्याख्या।
ड्रमबेग

यह एक्सप्रेस साइट पर उपलब्ध है यहाँ एक्सप्रेसजेस. com / en / guide / writing-middleware.html , यह वास्तव में अच्छा है। मुझे आश्चर्य है कि अब तक किसी ने इसका उल्लेख क्यों नहीं किया।
सूरज जैन

2
अच्छा है। यह सबसे स्पष्ट स्पष्टीकरण है जो मैंने यहां देखा है और हां, अजीब है कि किसी ने इसे संदर्भित नहीं किया है!
ड्रमबेग

1
अच्छी तरह से समझाया
रेहान शिककाल

मिडलवेयर लोडिंग का क्रम महत्वपूर्ण है: मिडिलवेयर फ़ंक्शंस जो पहले लोड होते हैं, पहले भी निष्पादित होते हैं। : यह इतना महत्वपूर्ण नोट है। किसी अन्य उत्तर में इसका उल्लेख नहीं है। एक शुरुआत के लिए जिसने केवल अजगर पर काम किया है, यह बेहद महत्वपूर्ण है क्योंकि इन चीजों का कभी सामना नहीं हुआ होगा।
Tessaracter

11

===== बहुत सरल व्याख्या =====

मध्यवर्तियों को अक्सर एक्सप्रेस.जेएस ढांचे के संदर्भ में उपयोग किया जाता है और नोड.जेएस के लिए एक मूल अवधारणा है। संक्षेप में, इसका मूल रूप से एक फ़ंक्शन है जो आपके आवेदन के अनुरोध और प्रतिक्रिया वस्तुओं तक पहुंच है। जिस तरह से मैं इसके बारे में सोचना चाहता हूं, वह 'चेक / प्री-स्क्रीन' की एक श्रृंखला है, जो कि आवेदन से निपटने से पहले अनुरोध से गुजरता है। उदाहरण के लिए, यह निर्धारित करने के लिए कि आवेदन के लिए आगे बढ़ने और अनुरोध प्रमाणित न होने या प्रत्येक अनुरोध को लॉग करने के लिए लॉगिन पृष्ठ को वापस करने से पहले, यह निर्धारित करने के लिए कि मिडवेअर एक अच्छा फिट होगा। बहुत सारे तृतीय-पक्ष बिचौलिये उपलब्ध हैं जो विभिन्न प्रकार की कार्यक्षमता को सक्षम बनाता है।

सरल मिडलवेयर उदाहरण:

var app = express();
app.use(function(req,res,next)){
    console.log("Request URL - "req.url);
    next();
}

उपरोक्त कोड प्रत्येक अनुरोध के लिए निष्पादित किया जाएगा और अनुरोध url को लॉग इन करेगा, अगला () विधि अनिवार्य रूप से प्रोग्राम को जारी रखने की अनुमति देता है। यदि अगले () फ़ंक्शन को लागू नहीं किया जाता है, तो कार्यक्रम आगे नहीं बढ़ेगा और मिडलवेयर के निष्पादन पर रुक जाएगा।

मिडलवेयर गॉटच की एक जोड़ी:

  1. आपके आवेदन में बिचौलियों का क्रम मायने रखता है, क्योंकि अनुरोध क्रमबद्ध क्रम में प्रत्येक के माध्यम से होगा।
  2. अपने मिडलवेयर फ़ंक्शन में अगली () विधि को कॉल करने के लिए भूलना आपके अनुरोध के प्रसंस्करण को रोक सकता है।
  3. मिडलवेयर फ़ंक्शन में रीक और रिस ऑब्जेक्ट्स में कोई भी परिवर्तन, परिवर्तन को एप्लिकेशन के अन्य भागों में उपलब्ध कराएगा जो कि री-रे का उपयोग करता है

1
आपका बहुत बहुत धन्यवाद! इसे समझने के लिए यह अब तक का सबसे अच्छा स्पष्टीकरण है। एक सवाल है, मैं मिडलवेयर के साथ कुछ कोड पढ़ रहा हूँ और यह फोन नहीं है next()लेकिन return next()। अंतर क्या है?
कंसाईरोबोट

थोड़े शब्दों के लिए बहुत सारे दोस्त धन्यवाद ... हम करते हैं next()क्योंकि हम चाहते हैं कि अगले मिडलवेयर को बुलाया जाए, मुझे नहीं लगता next()या return next(), कोई फर्क नहीं पड़ना चाहिए! फिर भी यह निर्भर करता है कि कोड क्या है ...
वैभव बच्च्व

7

मध्यवर्तियों को इनपुट / स्रोत के बाद बीच में निष्पादित किया जाता है, फिर एक आउटपुट का उत्पादन होता है जो अंतिम आउटपुट हो सकता है या अगले मिडलवेयर द्वारा चक्र पूरा होने तक उपयोग किया जा सकता है।

यह एक उत्पाद की तरह है जो एक असेंबली लाइन के माध्यम से जाता है जहां यह संशोधित हो जाता है क्योंकि यह पूरा होने तक साथ चलता है, मूल्यांकन या अस्वीकार हो जाता है।

एक मिडलवेयर को कुछ मानों पर काम करने की उम्मीद होती है (यानी पैरामीटर मान) और कुछ लॉजिक के आधार पर मिडलवेयर अगले मिडलवेयर को कॉल करेगा या नहीं करेगा या क्लाइंट को जवाब भेज देगा।

यदि आप अभी भी मिडलवेयर अवधारणा को समझ नहीं सकते हैं, तो यह एक तरह से डेकोरेटर या चेन ऑफ़ कमांड पैटर्न के समान है।


5

मिडिलवेयर उपयोगकर्ता द्वारा परिभाषित हैंडलर को लागू करने से पहले एक्सप्रेस जे एस मार्ग परत द्वारा बुलाए गए जंजीर कार्यों का एक सबसेट है। मिडलवेयर फ़ंक्शंस में अनुरोध और प्रतिक्रिया ऑब्जेक्ट्स की पूरी पहुंच है और उनमें से किसी को भी संशोधित कर सकते हैं।

मिडलवेयर श्रृंखला को हमेशा उसी क्रम में कहा जाता है जिसमें इसे परिभाषित किया गया है, इसलिए आपके लिए यह जानना महत्वपूर्ण है कि मिडलवेयर का एक विशिष्ट टुकड़ा क्या कर रहा है।
एक मिडलवेयर फंक्शन खत्म होने के बाद, यह चेन में अगले फंक्शन को फंक्शन के रूप में अपने अगले तर्क को कॉल करता है।
पूर्ण श्रृंखला निष्पादित होने के बाद, उपयोगकर्ता अनुरोध हैंडलर कहा जाता है।


1

चीजों को सरल रखो, यार!

नोट: इसका जवाब एक्सप्रेसजेड बिलिन मिडलवेयर मामलों से संबंधित है, हालांकि बिचौलियों की विभिन्न परिभाषाएँ और उपयोग मामले हैं।

मेरे दृष्टिकोण से, मिडलवेयर उपयोगिता या सहायक कार्यों के रूप में कार्य करता है , लेकिन इसका सक्रियण और उपयोग पूरी तरह से वैकल्पिक है, app.use('path', /* define or use builtin middleware */)जिसके उपयोग से हम नहीं चाहते हैं कि हम बहुत ही सामान्य कार्य करने के लिए कुछ कोड लिखें जो हमारे क्लाइंट के प्रत्येक HTTP अनुरोध के लिए आवश्यक हैं। कुकीज़ की प्रोसेसिंग की तरह, CSRF टोकन और ..., जो अधिकांश अनुप्रयोगों में बहुत आम हैं, इसलिए मिडलवेयर हमें अपने क्लाइंट के प्रत्येक HTTP अनुरोध के लिए इन सभी को कुछ स्टैक, अनुक्रम या संचालन के क्रम में करने में मदद कर सकता है, फिर प्रक्रिया का परिणाम प्रदान करें। ग्राहक अनुरोध की एक इकाई

उदाहरण:

ग्राहकों के अनुरोधों को स्वीकार करना और उनके अनुरोधों के अनुसार उन्हें प्रतिक्रिया प्रदान करना वेब सर्वर प्रौद्योगिकी की प्रकृति है।

सोचिए अगर हम "हैलो, दुनिया!" हमारे वेबसर्वर के मूल URI के लिए एक GET HTTP अनुरोध के लिए पाठ बहुत ही सरल परिदृश्य है और इसे किसी और चीज़ की आवश्यकता नहीं है, लेकिन इसके बजाय यदि हम वर्तमान में लॉग-इन उपयोगकर्ता की जांच कर रहे हैं और फिर "हैलो, यूजरनेम!" इस मामले में सामान्य से अधिक कुछ चाहिए, हम सभी क्लाइंट अनुरोध मेटाडेटा को संसाधित करने के लिए एक मिडलवेयर की आवश्यकता है और हमें क्लाइंट अनुरोध से पहचानी गई जानकारी प्रदान करें, फिर उस जानकारी के अनुसार हम अपने वर्तमान उपयोगकर्ता की विशिष्ट पहचान कर सकते हैं और उसके प्रति प्रतिक्रिया करना संभव है। / उसे कुछ संबंधित डेटा के साथ।

आशा है कि यह किसी की मदद करने के लिए!


-1

बहुत मूल शब्द में अगर मैं इसे इस तरह समझाना चाहता हूं तो मैं इसे ट्रैवर्सिमेडिया यूट्यूब चैनल एक्सप्रेस क्रैश कोर्स से सीखता हूं।
ठीक है तो मध्य बर्तन एक ऐसा कार्य है जो आपके मार्ग पर इस तरह से कॉल करने के बाद निष्पादित होता है।

var logger = function(req, res, next){
   console.log('logging...');
   next();
}

app.use(logger);

यह लॉगर फंक्शन हर बार आपके पेज को रिफ्रेश करने का मतलब है कि आप इसमें कुछ भी लिख सकते हैं जो आपके पेज को किसी भी ऑपरेशन एपीआई कॉल को प्रदान करने के बाद आपको करना होगा, चीजों को मूल रूप से रीसेट करना। और अपने मिडिलवेयर को रूटवेअर फंक्शन ऑर्डर से पहले इस मिडलवेयर को रखना वास्तव में महत्वपूर्ण है या यह काम नहीं करता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.