"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मिडलवेयर इन लिथ: यह कैसे काम करता है और अपना खुद का कैसे बनाएं

मिडलवेयर इन लिथ: यह कैसे काम करता है और अपना खुद का कैसे बनाएं

2024-11-08 को प्रकाशित
ब्राउज़ करें:608

Middleware in Lithe: How It Works and How to Create Your Own

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

मिडलवेयर लिथे में कैसे काम करता है

लिथे में, मिडलवेयर एप्लिकेशन के अनुरोध-प्रतिक्रिया चक्र में अनुरोध ऑब्जेक्ट ($req), प्रतिक्रिया ऑब्जेक्ट ($res), और $next फ़ंक्शन तक पहुंच वाले फ़ंक्शन हैं। $next फ़ंक्शन, जब आह्वान किया जाता है, तो वर्तमान स्टैक में अगले मिडलवेयर को कॉल करता है।

मिडिलवेयर फ़ंक्शंस आपके एप्लिकेशन में आने वाले HTTP अनुरोधों का निरीक्षण, फ़िल्टर और हेरफेर करने का एक सुविधाजनक तरीका प्रदान करते हैं। वे कर सकते हैं:

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

यदि वर्तमान मिडलवेयर अनुरोध-प्रतिक्रिया चक्र को समाप्त नहीं करता है, तो उसे अगले मिडलवेयर पर नियंत्रण पारित करने के लिए $next() को कॉल करना होगा। अन्यथा, अनुरोध लंबित रहेगा।


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

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

$app->use(function ($req, $res, $next) {
    $next();
});

कहाँ:

  • $req: HTTP अनुरोध तर्क, पारंपरिक रूप से $req कहा जाता है।
  • $res: HTTP प्रतिक्रिया तर्क, पारंपरिक रूप से $res कहा जाता है।
  • $अगला: कॉलबैक तर्क, पारंपरिक रूप से $अगला कहा जाता है।

मिडलवेयर को परिभाषित करना

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

$myLogger = function ($req, $res, $next) {
  echo 'LOGGED';
  $next();
};

उपरोक्त $next() कॉल पर ध्यान दें। यह फ़ंक्शन एप्लिकेशन में अगले मिडलवेयर को कॉल करता है। $next() एक अंतर्निहित PHP या Lithe फ़ंक्शन नहीं है, बल्कि मिडलवेयर फ़ंक्शन को दिया गया तीसरा तर्क है। हालाँकि $next() को कुछ भी नाम दिया जा सकता है, परंपरा के अनुसार, इसे हमेशा "अगला" ही कहा जाता है। भ्रम से बचने के लिए, इस परंपरा पर कायम रहें।

मिडिलवेयर को "परतों" की एक श्रृंखला के रूप में कल्पना करें जिससे HTTP अनुरोध आपके एप्लिकेशन तक पहुंचने से पहले गुजरते हैं। प्रत्येक परत अनुरोध की जांच या अस्वीकार कर सकती है।


मिडलवेयर लोड हो रहा है

मिडिलवेयर लोड करने के लिए, आप मिडलवेयर फ़ंक्शन को निर्दिष्ट करते हुए \Lithe\App क्लास की उपयोग() विधि को कॉल करते हैं। उदाहरण के लिए:

$app = new \Lithe\App;

$myLogger = function ($req, $res, $next) {
    echo 'LOGGED';
    $next();
};

$app->use($myLogger);

$app->get('/', function ($req, $res, $next) {
    $res->send('Hello World!');
});

जब भी ऐप को कोई अनुरोध प्राप्त होगा, तो "LOGGED" संदेश प्रिंट हो जाएगा। मिडलवेयर लोडिंग का क्रम मायने रखता है: जो पहले लोड किए गए हैं उन्हें पहले निष्पादित किया जाता है।

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


मिडलवेयर का उपयोग करना

एक Lithe एप्लिकेशन निम्नलिखित प्रकार के मिडलवेयर का उपयोग कर सकता है:

  • एप्लिकेशन-स्तरीय मिडलवेयर
  • राउटर-स्तरीय मिडलवेयर
  • तृतीय-पक्ष मिडलवेयर

एप्लिकेशन-स्तरीय मिडलवेयर

आप उपयोग() या METHOD() विधियों का उपयोग करके एप्लिकेशन-स्तरीय मिडलवेयर को एप्लिकेशन के उदाहरण से जोड़ते हैं, जहां METHOD लोअरकेस में HTTP विधि (उदाहरण के लिए, GET, PUT, POST) को संदर्भित करता है।

यह उदाहरण बिना पथ के मिडलवेयर दिखाता है। हर बार अनुरोध प्राप्त होने पर मिडलवेयर चलता है:

$app->use(function ($req, $res, $next) {
    echo 'Hello World!';
    $next();
});

नीचे दिए गए उदाहरण में, मिडलवेयर पथ /user/:id:
के लिए GET अनुरोध को संभालता है

$app->get('/user/:id', function ($req, $res, $next) {
    if ($req->param('id') === '0') {
        return $next();
    } 
    $res->send('ID is not 0');
}, function ($req, $res) {
    $res->send('regular');
});

राउटर-स्तरीय मिडलवेयर

राउटर-स्तरीय मिडलवेयर एप्लिकेशन-स्तरीय मिडलवेयर की तरह काम करता है लेकिन \Lithe\Http\राउटर के एक उदाहरण से जुड़ा होता है:

$router = new \Lithe\Http\Router;

आप उपयोग() और METHOD() फ़ंक्शन का उपयोग करके राउटर-स्तरीय मिडलवेयर लोड करते हैं।

यहां राउटर-स्तरीय मिडलवेयर का एक उदाहरण दिया गया है:

$router = new \Lithe\Http\Router;

$router->use(function ($req, $res, $next) {
    echo 'Time: ', Date('H:i:s'), '
'; $next(); }); $router->get('/user/:id', function ($req, $res, $next) { if ($req->param('id') === '0') { $res->redirect('/'); } $next(); }, function ($req, $res) { echo $req->param('id'); $res->render('special'); }); $app->use('/api', $router);

तृतीय-पक्ष मिडलवेयर

आप अपने Lithe अनुप्रयोगों में कार्यक्षमता जोड़ने के लिए तृतीय-पक्ष मिडलवेयर का उपयोग कर सकते हैं। आवश्यक PHP मॉड्यूल स्थापित करें और फिर इसे एप्लिकेशन या राउटर स्तर पर लोड करें।

यहां \Lithe\Middleware\Session\session के साथ सत्र मिडलवेयर लोड करने का एक उदाहरण दिया गया है:

use function Lithe\Middleware\Session\session;

$app = new \Lithe\App;

$app->use(session([
    'secure' => true
]));

आमतौर पर लीथ के साथ उपयोग किए जाने वाले तृतीय-पक्ष मिडलवेयर की सूची के लिए, तृतीय-पक्ष मिडलवेयर संसाधन की जांच करें।


कॉन्फ़िगर करने योग्य मिडलवेयर

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





अब, आप कस्टम कॉन्फ़िगरेशन के साथ मिडलवेयर का उपयोग कर सकते हैं:

$app->use(my_middleware(['option1' => '1', 'option2' => '2']));

मिडलवेयर बनाने के लिए जिसे अन्य डेवलपर्स कंपोजर के माध्यम से इंस्टॉल कर सकते हैं, एक पैकेज है जिसे lithemod/flow कहा जाता है। यह लिथ में HTTP अनुरोधों और प्रतिक्रियाओं को संभालने के लिए इंटरफेस और उपयोगिताएँ प्रदान करता है, जो विभिन्न अनुप्रयोगों में मानकीकृत और उपयोग के लिए तैयार मिडलवेयर के निर्माण की सुविधा प्रदान करता है।

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

विज्ञप्ति वक्तव्य यह आलेख यहां पुन: प्रस्तुत किया गया है: https://dev.to/lithephp/middleware-in-lithe-how-it-works-and-how-to-create-your-own-3h67?1 यदि कोई उल्लंघन है, तो कृपया स्टडी_गोलंग@163 .comdelete से संपर्क करें
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3