ইন 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()
) পাইপলাইনটি ইউআরএলের উপর নির্ভর করে শাখায় অনুমতি দেয়
use
এক্সপ্রেস এইচটিটিপি সার্ভার অবজেক্টের রুটগুলি দ্বারা ব্যবহৃত মিডলওয়্যার কনফিগার করার একটি পদ্ধতি। পদ্ধতিটি সংযোগের অংশ হিসাবে সংজ্ঞায়িত করা হয় যা এক্সপ্রেস ভিত্তিক।
আপডেট 4.x সংস্করণ দিয়ে শুরু করা, এক্সপ্রেস আর সংযোগের উপর নির্ভর করে না ।
মিডলওয়্যার ফাংশনগুলি যা পূর্বে এক্সপ্রেসের সাথে অন্তর্ভুক্ত ছিল এখন পৃথক মডিউলগুলিতে রয়েছে; মিডলওয়্যার ফাংশনগুলির তালিকা দেখুন ।
app.use(function(){ var object = new SomeConstructor; next(); })
প্রতিটি অ্যাপ্লিকেশন.ইউজ (মিডলওয়্যার) প্রতিবার সার্ভারে একটি অনুরোধ প্রেরণ করা হয়।
অ্যাপ.ইউজ () মিডলওয়্যার ফাংশন মাউন্ট করতে ব্যবহৃত হয় বা নির্দিষ্ট পথে মাউন্ট করে, বেসওয়থ পাথ মেলে মিডলওয়্যার ফাংশনটি কার্যকর করা হয়।
উদাহরণস্বরূপ: আপনি যদি সূচিরাউটার.জেজে app.use () ব্যবহার করে থাকেন তবে এটির মতো:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
উপরের কোড অ্যাপে ব্যবহার করুন () বিজ্ঞাপন / রাউটার.জেজে '/ বিজ্ঞাপন'-এ পাথটি মাউন্ট করুন।
এখন বিজ্ঞাপনের রাউটার.জেএস এ
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
বিজ্ঞাপনের রাউটার.জেজে, পথটি বিজ্ঞাপনের জন্য এই জাতীয় হবে- '/ বিজ্ঞাপন / শো', এবং তারপরে এটি কন্ট্রোলার ইন্ডেক্স.এডস.শোঅ্যাড () অনুযায়ী কাজ করবে।
app.use ([পাথ], কলব্যাক, [কলব্যাক]): আমরা একইটিতে একটি কলব্যাক যোগ করতে পারি।
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use () এক্সপ্রেস অ্যাপ্লিকেশনগুলিতে মিডলওয়্যার হিসাবে কাজ করে। App.get () এবং app.post () বা এর চেয়ে আলাদা , আপনি অনুরোধ URL নির্দিষ্ট না করেই অ্যাপ্লিকেশন ব্যবহার করতে পারেন । এমন ক্ষেত্রে এটি কী করে তা, প্রতিটি সময়ই কার্যকর করা হয় ইউআরএল-এর আঘাত হ'ল না কেন।
app.use () এর মতো কাজ করে:
যা খুব সহজ।
এবং কেবল তখনই এক্সপ্রেস রাউটিংয়ের মতো বাকী জিনিসগুলি করবে।
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
মিড.ওয়্যার রেজিস্ট্রেশন ক্রমের উপর নির্ভর করে কোনও শেষ রুট যুক্তি বা মধ্যবর্তী রুট লজিক কার্যকর করার আগে অ্যাপ.ইজ মিডলওয়্যার বা মিডলওয়্যারের চেইন (বা একাধিক মিডলওয়্যারস) রেজিস্টার করার একটি উপায় ।
মিডলওয়্যার: ফরম চেইন অব ফাংশন / মিডলওয়্যার-ফাংশন সঙ্গে 3 পরামিতি req, মাঝামাঝি এবং পরবর্তী । এর পরেরটি হল কলব্যাক যা পরবর্তী মিডলওয়্যার-ফাংশনটিকে শৃঙ্খলে উল্লেখ করে এবং চেনের শেষ মিডলওয়্যার-ফাংশনের ক্ষেত্রে পরবর্তী পয়েন্টগুলি পরবর্তী নিবন্ধিত মিডরেয়ার-শৃঙ্খলের প্রথম-মিডলওয়্যার-ফাংশনের দিকে নির্দেশ করে।
এক্সপ্রেসে আমরা যদি "এক্সপ্রেস" থেকে এক্সপ্রেস আমদানি করি এবং অ্যাপ = এক্সপ্রেস () ব্যবহার করি; তারপরে অ্যাপে এক্সপ্রেসের সমস্ত কার্যকারিতা রয়েছে
যদি আমরা অ্যাপ্লিকেশন ব্যবহার করি ()
সম্পূর্ণ এক্সপ্রেস প্রকল্পে কোনও মডিউল / মিডলওয়্যার ফাংশন সহ
app.use
একটি ফাংশন মিডলওয়্যার প্রয়োজন। উদাহরণ স্বরূপ:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
এই উদাহরণটি মাঝখানে স্থাপন করা মিডওয়্যার ফাংশনটি দেখায় /user/:id
। এই ফাংশনটি কোনও প্রকারের HTTP অনুরোধের জন্য কার্যকর করা হয় /user/:id
।
এটি REST ওয়েব সার্ভারের মতো, /xx
বিভিন্ন ক্রিয়াকে উপস্থাপন করতে বিভিন্ন ব্যবহার করুন ।
use
করতে পারে তার প্রতিটি ব্যাখ্যা আমার প্রয়োজন ; আমি কেবল এটি কী তা জানতে হবে (এবং কীভাবে নিজেকে আরও গবেষণা করতে হবে তা জানতে কোনও প্রসঙ্গের জ্ঞান)।
app.use যেমন 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 (bodyParser.json ()); অনেক middlewares আপনি আপনার দ্রুতগামী অ্যাপ্লিকেশনে ব্যবহার করতে পারেন মাত্র ডক পড়া আছেন: http://expressjs.com/en/guide/using-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
ইত্যাদি মিডলওয়্যার বদলাতে পারেন request
এবং response
অবজেক্ট। এটি কোডের একটি টুকরাও কার্যকর করতে পারে।
আপনি নিজের মিডলওয়্যার ফাংশনটিও তৈরি করতে পারেন
app.use( function(req, res, next) {
// your code
next();
})
এটি তিনটি পরামিতি ধারণ করে req
, res
, next
এছাড়াও আপনি প্রমাণীকরণ এবং ইনপুট প্যারাম এর বৈধতা জন্য এটি ব্যবহার আপনার নিয়ামক পরিষ্কার রাখতে পারবেন না।
next()
পরবর্তী মিডলওয়্যার বা রুটে যাওয়ার জন্য ব্যবহৃত হয়।
মিডলওয়্যার থেকে প্রতিক্রিয়া পাঠাতে পারেন
অ্যাপ্লিকেশন-স্তরের মিডলওয়্যারটিকে অ্যাপ্লিকেশন আইটেমের একটি উদাহরণে আবশ্যক করে অ্যাপ.ইউজ () এবং অ্যাপ্লিকেশন ব্যবহার করুন M ছোট হাতের অক্ষরে পোস্ট করুন।
সংক্ষেপে app.use () সমস্ত প্রকারের অনুরোধগুলিকে সমর্থন করে (যেমন: পান, পোস্ট করুন, ...] তাই এটি বেশিরভাগই মিডলওয়্যার সেটআপ করতে ব্যবহৃত হয়। বা রুট এবং ফাংশনগুলি বিচ্ছিন্ন হয়ে যাওয়ার জন্য ব্যবহার করা যেতে পারে
উদাহরণ:
app.use("/test",functionName)
এবং ফাংশননাম বিভিন্ন ফাইলে অবস্থিত
app.use()
একটি মিডওয়্যারের পদ্ধতি।
মিডলওয়্যার পদ্ধতিটি জাভাতে একটি ইন্টারসেপ্টারের মতো, এই পদ্ধতিটি সর্বদা সমস্ত অনুরোধের জন্য কার্যকর করে।
মিডলওয়্যারের উদ্দেশ্য এবং ব্যবহার: -
app.use
(মিডলওয়্যার ফ্রেমওয়ার্ক nodejs) এক্সপ্রেস দ্বারা তৈরি করা হয়
app.use intilization প্রক্রিয়া যে কোনো নির্দিষ্ট ক্যোয়ারী চালানো ব্যবহার
server.js (নোড)
Var অ্যাপ্লিকেশন = ( 'প্রকাশ করার') প্রয়োজন;
সুতরাং সার্ভার আপ করার সময় মূলত অ্যাপ.ইউজ ফাংশনটি প্রতিবার ডাকে
app.use(bodyparser.json())
app.use হ'ল অ্যাপ্লিকেশন স্তর মিডলওয়্যার
অ্যাপ্লিকেশন-স্তরের মিডলওয়্যারটিকে অ্যাপ্লিকেশন আইটেমের একটি উদাহরণে আবশ্যক করে অ্যাপ.ইউজ () এবং অ্যাপ্লিকেশন ব্যবহার করুন M ছোট হাতের অক্ষরে পোস্ট করুন।
আপনি সমস্ত অনুরোধগুলি যাচাই করতে ব্যবহার করতে পারেন, উদাহরণস্বরূপ, আপনি টোকেন / অ্যাক্সেস টোকেন চেক করতে চান অ্যাপ্লিকেশন ব্যবহার করে আপনাকে মিডলওয়্যারটি লিখতে হবে use অনুরোধে টোকেনটি পরীক্ষা করতে ব্যবহার করুন।
এই উদাহরণটি কোনও মাউন্ট পাথ ছাড়াই একটি মিডওয়্যারের ফাংশন দেখায়। অ্যাপ্লিকেশনটির অনুরোধ পাওয়ার সাথে সাথে ফাংশনটি কার্যকর করা হয়।
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
https://expressjs.com/en/guide/using-middleware.html থেকে রেফারেন্স
অ্যাপ.ইউজ (পাথ, মিডলওয়্যার) মিডলওয়্যার ফাংশনকে কল করতে ব্যবহৃত হয় যা সংশ্লিষ্ট পাথের জন্য রুটটি আঘাতের আগে ডাকা প্রয়োজন। একাধিক মিডলওয়্যার ফাংশন একটি অ্যাপ.ইউজের মাধ্যমে আহ্বান করা যেতে পারে।
অ্যাপ্লিকেশন। ('/ আনুন', প্রয়োগশক্তি ') -> প্রয়োগ / অনুমোদন মিডলওয়্যার fn কল করা হবে যখন ' / ফেচ 'দিয়ে শুরু করা একটি অনুরোধ আসে। এটি / ফেচ / ব্যবহারকারী , / আনয়ন / আইডি / {আইডি} ইত্যাদি হতে পারে
কিছু মিডলওয়্যার ফাংশন অনুরোধ নির্বিশেষে কল করতে হতে পারে। এই জাতীয় ক্ষেত্রে, কোনও পাথ নির্দিষ্ট করা যায় না এবং যেহেতু পাথটি ডিফল্ট হয় / এবং প্রতিটি অনুরোধ / দিয়ে শুরু হয় , তাই এই মিডলওয়্যার ফাংশনটি সমস্ত অনুরোধের জন্য ডাকা হবে।
app.use (() => {// একটি সাধারণ পরিষেবা শুরু করুন})
পরবর্তী () এফ.এন.কে প্রতিটি মিডলওয়্যার ফাংশনটির মধ্যে কল করা প্রয়োজন যখন একাধিক মিডলওয়্যার ফাংশন অ্যাপ্লিকেশনটিতে ব্যবহার করা হয় , অন্যথায় পরবর্তী মিডওয়্যার ফাংশনটি কল করা হবে না।
তথ্যসূত্র: http://expressjs.com/en/api.html#app.use
দ্রষ্টব্য: ডকুমেন্টেশন বলছে যে আমরা বর্তমান মিডলওয়্যার ফাংশনের মধ্যে পরবর্তী ('রুট') কল করে বর্তমানের অনুসরণের মিডলওয়্যার ফাংশনগুলিকে বাইপাস করতে পারি , তবে এই কৌশলটি আমার জন্য অ্যাপ্লিকেশন ব্যবহার করে না তবে অ্যাপটির সাথে কাজ করেছে M নীচের মতো পদ্ধতি । সুতরাং, 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();
})