में NodeJS के लिये दस्तावेज express
मॉड्यूल , उदाहरण के कोड है app.use(...)
।
क्या है use
कार्य और इसे कहाँ परिभाषित किया गया है?
में NodeJS के लिये दस्तावेज express
मॉड्यूल , उदाहरण के कोड है app.use(...)
।
क्या है use
कार्य और इसे कहाँ परिभाषित किया गया है?
जवाबों:
एक्सप्रेस सर्वर के निर्माण पर ऐप ऑब्जेक्ट को त्वरित किया जाता है। इसमें एक मिडलवेयर स्टैक है जिसे कस्टमाइज़ किया जा सकता है app.configure()
(यह अब संस्करण 4.x में हटा दिया गया है) ।
अपने मिडलवेयर को सेटअप करने के app.use(<specific_middleware_layer_here>)
लिए , आप प्रत्येक मिडलवेयर लेयर के लिए इनवॉइस कर सकते हैं, जिसे आप जोड़ना चाहते हैं (यह सभी रास्तों के लिए सामान्य हो सकता है, या केवल विशिष्ट पथों पर ट्रिगर किया जा सकता है), और यह आपके एक्सप्रेस मिडलवेयर स्टैक पर जोड़ देगा । मिडलवेयर लेयर्स को एक के बाद एक कई इनवोकेशन में एक-एक करके जोड़ा जा सकता है use
, या एक बार में एक ही बार में एक ही इनवोकेशन के साथ जोड़ा जा सकता है । प्रलेखन देखेंuse
अधिक विवरण के लिए ।
एक्सप्रेस मिडलवेयर की वैचारिक समझ के लिए एक उदाहरण देने के लिए, यहाँ मेरा ऐप मिडलवेयर स्टैक (app.stack) कैसा दिखता है जब JSON के रूप में कंसोल पर मेरी ऐप ऑब्जेक्ट को लॉग इन कर रहा है:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
आप अनुमान करने में सक्षम हो सकते हैं, मैं कहा जाता है app.use(express.bodyParser())
, app.use(express.cookieParser())
, आदि, जो मिडलवेयर ढेर करने के लिए इन एक्सप्रेस मिडलवेयर 'परतों' जोड़ी गई। ध्यान दें कि मार्ग रिक्त हैं, इसका मतलब है कि जब मैंने उन मिडलवेयर परतों को जोड़ा था जो मैंने निर्दिष्ट किया था कि उन्हें किसी भी मार्ग पर ट्रिगर किया जाएगा। अगर मैंने एक कस्टम मिडलवेयर लेयर जोड़ी है जो केवल उस पथ पर ट्रिगर /user/:id
होती है जो एक स्ट्रिंग के रूप में परिलक्षित होगीroute
ऊपर स्टैक प्रिंटआउट में उस मिडलवेयर लेयर ऑब्जेक्ट क्षेत्र ।
प्रत्येक परत अनिवार्य रूप से एक फ़ंक्शन जोड़ रही है जो विशेष रूप से मिडलवेयर के माध्यम से आपके प्रवाह के लिए कुछ संभालती है।
जैसे जोड़कर bodyParser
, आप सुनिश्चित कर रहे हैं कि आपका सर्वर एक्सप्रेस मिडलवेयर के माध्यम से आने वाले अनुरोधों को संभालता है । इसलिए, अब आने वाले अनुरोधों के मुख्य भाग को पार्स करना उस प्रक्रिया का हिस्सा है जो आपके मिडलवेयर को आने वाले अनुरोधों को संभालने में लेता है - क्योंकि आपने बुलाया था app.use(bodyParser)
।
next()
कॉलबैक है प्रत्येक मिडलवेयर को पाइप लाइन में अगले फ़ंक्शन के लिए प्रसंस्करण को कॉल करने की उम्मीद है। रूटिंग सिस्टम (पहला तर्क app.use()
) पाइप लाइन को URL पर निर्भर होने की अनुमति देता है
use
एक्सप्रेस HTTP सर्वर ऑब्जेक्ट के मार्गों द्वारा उपयोग किए जाने वाले मिडलवेयर को कॉन्फ़िगर करने की एक विधि है। विधि को कनेक्ट के भाग के रूप में परिभाषित किया गया है जो एक्सप्रेस पर आधारित है।
अद्यतन संस्करण 4.x से शुरू, एक्सप्रेस अब कनेक्ट पर निर्भर नहीं करता है ।
मिडवेवेयर फ़ंक्शंस जो पहले एक्सप्रेस के साथ शामिल थे, अब अलग मॉड्यूल में हैं; मिडलवेयर फ़ंक्शंस की सूची देखें ।
app.use(function(){ var object = new SomeConstructor; next(); })
प्रत्येक एप्लिकेशन (मिडलवेयर) को हर बार सर्वर पर एक अनुरोध भेजा जाता है।
app.use () मिडलवेयर फ़ंक्शन को माउंट करने या निर्दिष्ट पथ पर माउंट करने के लिए उपयोग किया जाता है, बेस पथ से मेल खाने पर मिडिलवेयर फ़ंक्शन को निष्पादित किया जाता है।
उदाहरण के लिए: यदि आप indexRouter.js में app.use () का उपयोग कर रहे हैं, तो इस तरह:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
उपरोक्त कोड में app.use () adsRouter.js पर '/ ads' पर पथ को माउंट करें।
अब adsRouter.js में
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
adsRouter.js में, मार्ग विज्ञापनों के लिए इस तरह होगा- '/ ads / show', और फिर यह नियंत्रक के अनुसार काम करेगा। Index.ads.showAd ()।
app.use ([पथ], कॉलबैक, [कॉलबैक]): हम उसी पर कॉलबैक जोड़ सकते हैं।
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use () उस तरह काम करता है:
जो बहुत ही सरल है।
और उसके बाद ही बाकी सामान रूटिंग की तरह किया जाएगा।
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
app.use मिडलवेयर पंजीकरण अनुक्रम के आदेश के आधार पर किसी भी अंतिम मार्ग तर्क या मध्यस्थ मार्ग तर्क को निष्पादित करने से पहले मिडलवेयर या मिडलवेयर (या कई मिडलवेयर) की श्रृंखला को पंजीकृत करने का एक तरीका है ।
मिडलवेयर: 3 पैरामीटर रीक, रेस और नेक्स्ट के साथ फंक्शंस / मिडलवेयर-फंक्शंस की चेन बनाता है । अगला कॉलबैक है जो अगले मिडलवेयर-फंक्शन को चेन में संदर्भित करता है और चेन के अंतिम मिडिलवेयर-फंक्शन के मामले में अगले पंजीकृत मिडलवेयर-चेन के पहले-मिडलवेयर-फंक्शन को इंगित करता है।
यदि हम एक्सप्रेस "एक्सप्रेस" से आयात करते हैं और एप्लिकेशन = एक्सप्रेस () का उपयोग करते हैं, तो एक्सप्रेस में; फिर एक्सप्रेस की सभी कार्यक्षमता वाले ऐप
अगर हम app.use () का उपयोग करते हैं
पूरे एक्सप्रेस प्रोजेक्ट में उपयोग करने के लिए किसी भी मॉड्यूल / मिडलवेयर फ़ंक्शन के साथ
app.use
एक फ़ंक्शन को मिडलवेयर की आवश्यकता होती है। उदाहरण के लिए:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
यह उदाहरण /user/:id
पथ में स्थापित मिडलवेयर फ़ंक्शन को दिखाता है । इस फ़ंक्शन को /user/:id
पथ में किसी भी प्रकार के HTTP अनुरोध के लिए निष्पादित किया जाता है।
यह REST वेब सर्वर के समान है, बस अलग- /xx
अलग क्रियाओं का प्रतिनिधित्व करने के लिए अलग-अलग उपयोग करें।
use
कर सकता है; मुझे बस यह जानने की जरूरत थी कि यह क्या था (और किसी भी संदर्भ में यह जानने के लिए कि शोध को और अधिक कैसे जाना जाए)।
app.use app अनुरोध के लिए मिडलवेयर के रूप में woks है । वाक्य - विन्यास
app.use('pass request format',function which contain request response onject)
उदाहरण
app.use('/',funtion(req,res){
console.log(all request pass through it);
// here u can check your authentication and other activities.
})
अपने अनुरोध को रूट करने के मामले में भी आप इसका उपयोग कर सकते हैं।
app.use('/', roting_object);
मिडलवेयर सॉफ्टवेयर के लिए एक सामान्य शब्द है जो "ग्लू को एक साथ" परोसता है इसलिए app.use मिडवेवेयर को कॉन्फ़िगर करने का एक तरीका है, उदाहरण के लिए: अनुरोध के शरीर को पार्स और हैंडल करने के लिए: app.use (bodyParser.urlencoded ({विस्तारित): सच })); app.use (bodyParser.json ()); कई बिचौलिए हैं जिन्हें आप अपने एक्सप्रेस एप्लिकेशन में उपयोग कर सकते हैं बस डॉक्टर पढ़ें: http://expressjs.com/en/guide/use-middleware.html
app.use निर्दिष्ट मिडलवेयर को मुख्य ऐप मिडिलवेयर स्टैक पर लागू करता है। जब मिडलवेयर को मुख्य ऐप स्टैक में संलग्न करते हैं, तो अनुलग्नक का क्रम मायने रखता है; यदि आप मिडलवेयर बी से पहले मिडलवेयर ए संलग्न करते हैं, तो मिडलवेयर ए हमेशा पहले निष्पादित होगा। आप एक पथ निर्दिष्ट कर सकते हैं जिसके लिए एक विशेष मिडलवेयर लागू है। नीचे दिए गए उदाहरण में, "हैलो वर्ल्ड" हमेशा "खुशहाल छुट्टियों" से पहले लॉग इन किया जाएगा।
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
यह आप किसी भी मिडलवेयर उपयोग करने के लिए (सक्षम बनाता है और पढ़ें ) की तरह body_parser
, CORS
आदि Middleware में परिवर्तन कर सकते request
हैं और response
वस्तुओं। यह कोड का एक टुकड़ा भी निष्पादित कर सकता है।
आप अपने खुद के मिडलवेयर फ़ंक्शन भी बना सकते हैं
app.use( function(req, res, next) {
// your code
next();
})
यह तीन पैरामीटर शामिल हों req
, res
, next
तुम भी प्रमाणीकरण और इनपुट पैरामीटर के सत्यापन के लिए उपयोग अपने नियंत्रक को साफ रखने के कर सकते हैं।
next()
अगले मिडलवेयर या रूट पर जाने के लिए उपयोग किया जाता है।
आप मिडलवेयर से प्रतिक्रिया भेज सकते हैं
एप्लिकेशन का उपयोग करके ऐप ऑब्जेक्ट के एक उदाहरण के लिए बिंदू-स्तरीय मिडलवेयर को जोड़ें। () और ऐप। एमईटीएचओडी () फ़ंक्शन, जहां METHOD अनुरोध का HTTP तरीका है जो मिडलवेयर फ़ंक्शन को हैंडल करता है (जैसे GET, PUT, या लोअरकेस में POST)।
संक्षेप में app.use () सभी प्रकार के अनुरोधों का समर्थन करता है [जैसे: get, post, ...] इसलिए इसका ज्यादातर उपयोग middelware को सेटअप करने के लिए किया जाता है। या जब मार्गों और कार्यों के अलग होने के लिए उपयोग किया जा सकता है
उदाहरण:
app.use("/test",functionName)
और फ़ंक्शननाम अलग फ़ाइल में स्थित है
app.use()
एक मिडलवेयर विधि है।
मिडलवेयर विधि जावा में इंटरसेप्टर की तरह है, यह विधि हमेशा सभी अनुरोधों के लिए निष्पादित होती है।
मिडलवेयर का उद्देश्य और उपयोग: -
app.use
एक्सप्रेस (नोडज मिडलवेयर फ्रेमवर्क) द्वारा बनाया गया है।
ऐप का उपयोग किसी भी विशिष्ट क्वेरी को इंट्राइजेशन प्रोसेस
server.js (नोड)
var ऐप पर निष्पादित करने के लिए किया जाता है
= आवश्यकता ('एक्सप्रेस');
इसलिए मूल रूप से app.use फ़ंक्शन को हर बार जब सर्वर अप कहा जाता है
app.use(bodyparser.json())
app.use अनुप्रयोग स्तर मिडलवेयर है
एप्लिकेशन का उपयोग करके ऐप ऑब्जेक्ट के एक उदाहरण के लिए बिंदू-स्तरीय मिडलवेयर को जोड़ें। () और ऐप। एमईटीएचओडी () फ़ंक्शन, जहां METHOD अनुरोध का HTTP तरीका है जो मिडलवेयर फ़ंक्शन को हैंडल करता है (जैसे GET, PUT, या लोअरकेस में POST)।
आप सभी अनुरोधों की जांच करने के लिए उपयोग कर सकते हैं, उदाहरण के लिए, आप टोकन / एक्सेस टोकन की जांच करना चाहते हैं, आपको अनुरोध में टोकन की जांच करने के लिए app.use का उपयोग करके एक मिडलवेयर लिखने की आवश्यकता है।
यह उदाहरण कोई माउंट पथ के साथ एक मिडलवेयर फ़ंक्शन दिखाता है। एप्लिकेशन को अनुरोध प्राप्त होने पर हर बार फ़ंक्शन निष्पादित किया जाता है।
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
https://expressjs.com/en/guide/use-middleware.html से संदर्भ
app.use (पाथ, मिडलवेयर) का उपयोग मिडिलवेयर फ़ंक्शन को कॉल करने के लिए किया जाता है जिसे संबंधित पथ के लिए मार्ग हिट होने से पहले कॉल करने की आवश्यकता होती है। कई मिडलवेयर फ़ंक्शंस app.use के माध्यम से मंगाए जा सकते हैं।
app.use ('/ fetch', enforceAuthentication) -> enforceAuthentication मिडलवेयर fn को कॉल किया जाएगा जब '/ लाने' के साथ शुरू होने वाला अनुरोधप्राप्त होगा। यह / fetch / users , / fetch / ids / {id} , आदि हो सकता है
कुछ मिडलवेयर फ़ंक्शंस को अनुरोध के बावजूद कहा जा सकता है। ऐसे मामलों के लिए, एक पथ निर्दिष्ट नहीं किया जाता है, और चूंकि पथ / और हर अनुरोध के साथ शुरू होता है / , इस मिडलवेयर फ़ंक्शन को सभी अनुरोधों के लिए बुलाया जाएगा।
app.use () (> => // एक सामान्य सेवा प्रारंभ करें))
अगले () fn को प्रत्येक मिडलवेयर फ़ंक्शन के भीतर बुलाया जाना चाहिए, जब कई मिडलवेयर फ़ंक्शंस app.use में पास किए जाते हैं , अन्यथा अगले मिडलवेयर फ़ंक्शन को नहीं बुलाया जाएगा।
संदर्भ: http://expressjs.com/en/api.html#app.use
नोट: प्रलेखन कहता है कि हम वर्तमान मिडलवेयर फ़ंक्शन के भीतर अगले ('मार्ग') को कॉल करके मिडिलवेयर फ़ंक्शंस को बायपास कर सकते हैं , लेकिन इस तकनीक ने ऐप के भीतर मेरे लिए काम नहीं किया। लेकिन ऐप के साथ काम किया। नीचे की तरह । तो, fn1 और fn2 को नहीं बल्कि fn3 कहा जाता था।
app.get('/fetch', function fn1(req, res, next) {
console.log("First middleware function called");
next();
},
function fn2(req, res, next) {
console.log("Second middleware function called");
next("route");
},
function fn3(req, res, next) {
console.log("Third middleware function will not be called");
next();
})