Advertisement
  1. Code
  2. Laravel 5

Laravel मिडलवेयर की मूल बातें समझें

by
Read Time:8 minsLanguages:

Hindi (हिंदी) translation by Ashish Rampal (you can also view the original English article)

इस आर्टिकल में, हम मिडलवेयर के कांसेप्ट को समझने के लिए Laravel फ्रेमवर्क में गहराई से जाएंगे। आर्टिकल के पहले हाफ में मिडलवेयर के परिचय के साथ शुरू करते है और जानते हैं कि वास्तव में इसका क्या उपयोग किया जाता है।

जैसे जैसे हम आगे बढ़ते हैं, हम यह जानते हैं कि Laravel एप्लीकेशन में कस्टम मिडलवेयर कैसे बनाएं। अपने कस्टम मिडलवेयर के निर्माण के बाद, हम इसे Laravel के साथ रजिस्टर करने के लिए उपलब्ध ऑप्शंस का पता लगाएंगे ताकि यह रिक्वेस्ट को प्रोसेस करने के फ्लो के दौरान इसे आवाह्न किया जा सके।

मुझे आशा है कि आप अपने आप को बेसिक Laravel कांसेप्ट और Artisan कमांड लाइन टूल जिससे कि हम scaffolding कोड्स बना सके, से परिचित समझते हैं। बेशक, नवीनतम Laravel एप्लिकेशन की वर्किंग इंस्टालेशन आपको सीधे इस आर्टिकल में दिए गए उदाहरणों को चलाने के लिए अनुमति देता है।

Laravel में मिडिलवेयर (Middleware) क्या है?

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

तो वास्तव में Laravel रिक्वेस्ट प्रोसेसिंग फ्लो में hooking का क्या मुद्दा है? उसके बारे में सोचें जो एप्लीकेशन के बूटस्ट्रैपिंग की शुरूआती स्टेज पर एक्सेक्यूटे करना है। उदाहरण के लिए, यह तय करने के लिए कि वे वर्तमान route तक पहुंचने की अनुमति है या नहीं, प्रारंभिक स्टेजेस में यूजर को ऑथेंटिकेट करने की आवश्यक है।

कुछ चीजें जो मैं सोच सकता था कि आप मिडलवेयर के माध्यम से प्राप्त कर सकते हैं:

  • logging of requests
  • redirecting users
  • altering/sanitizing the incoming parameters
  • Laravel एप्लीकेशन के द्वारा जेनेरेट किये गए रिस्पांस को मैनिपुलेट करना
  • और भी बहुत कुछ

असल में, डिफ़ॉल्ट Laravel एप्लिकेशन में पहले से ही इसके कुछ मिडलवेयर के महत्वपूर्ण  हिस्से शामिल होते हैं। उदाहरण के लिए, एक मिडिलवेयर है जो यह जांचता है कि क्या साइट मेंटेनेंस मोड में है। दूसरी ओर, इनपुट रिक्वेस्ट पैरामीटर्स को सैनीटाइज़ करने के लिए मिडलवेयर है। जैसा कि मैंने पहले उल्लेख किया है, यूजर ऑथेंटिकेशन भी मिडलवेयर के द्वारा ही प्राप्त किया जाता है।

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

कस्टम मिडिलवेयर कैसे बनाएं

इस सेक्शन में, हम अपना कस्टम मिडिलवेयर बनाएंगे I लेकिन हमारे कस्टम मिडिलवेयर को पूरा करने वाला क्या है?

हाल ही में, मुझे अपने क्लाइंट की एक कस्टम जरूरत का सामना करना पड़ा कि यदि यूजर साइट को किसी भी मोबाइल डिवाइस से एक्सेस करते हैं, तो उन्हें सम्बंधित sub-domain URL पर रीडायरेक्ट कर दें जिसमे सभी क्वेरीस्ट्रिंग (querystring) पैरामीटर बरकरार रहने चाहिए। मेरा मानना है कि यह इस विशेष परिदृश्य में उपयोग किए जा सकते हैं, यह प्रदर्शित करने के लिए यह सही उपयोग है।

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

सभी थ्योरी पर चर्चा करते हुए, हम वास्तविक डेवलपमेंट में कूदते हैं, और यह एक नए कांसेप्ट को समझने का सबसे अच्छा तरीका है, है ना?

Laravel डेवलपर के रूप में, यह Artisan टूल है जिसका उपयोग आप मूल टेम्पलेट कोड बनाने के लिए ज्यादातर समय उपयोग कर सकते हैं, यदि आप कोई कस्टम फंक्शनलिटी बनाना चाहते हैं। हमारे कस्टम middleware के लिए बुनियादी टेम्पलेट कोड बनाने के लिए इसका उपयोग करते हैं।

कमांड लाइन पर जाएं और अपने प्रोजेक्ट के डॉक्यूमेंट रूट को जाएं। कस्टम middleware टेम्पलेट MobileRedirect बनाने के लिए निम्न कमांड चलाएं।

और इससे उसमें निम्नलिखित कोड के साथ एक फ़ाइल app/Http/Middleware/MobileRedirect.php बननी चाहिए।

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

मुझे मिडलवेयर के प्रकारो को पेश करने के अवसर को ग्रैब करने दो जो Laravel के साथ आता है। यह मुख्य रूप से, दो प्रकार के होते हैं- बिफोर मिडलवेयर और आफ्टर मिडलवेयर।

जैसा कि नाम से पता चलता है, बिफोर (before) मिडलवेयर वो है जो रिक्वेस्ट से पहले चलता है वास्तव में हैंडल किया जाता है और रिस्पांस बिल्ट होता है। दूसरी तरफ, आफ्टर (after) मिडलवेयर एप्लीकेशन द्वारा रिक्वेस्ट हैंडल करने के बाद चलता है और इस समय रिस्पांस पहले ही बन जाता है।

हमारे मामले में, हमें यूजर के रिक्वेस्ट को हैंडल करने से पहले रीडायरेक्ट (redirect) करने की आवश्यकता है, और इसलिए इसे बिफोर (before) मिडलवेयर के रूप में डेवलप किया जाएगा।

आगे बड़े और नीचे दिए गए कंटेंट के साथ फाइल app/Http/Middleware/MobileRedirect.php मॉडिफाई करें।

सिम्पलिसिटी के लिए, हम सिर्फ mobile क्वेरीस्ट्रिंग (querystring) पैरामीटर की मौजूदगी की जांच करते हैं, और यदि यह TRUE पर सेट है, तो यूज़र्स को संबंधित मोबाइल साइट URL पर रीडायरेक्ट किया जाएगा। बेशक, आप यूज़र्स एजेंट डिटेक्शन लायब्रेरी (user agent detection library) का उपयोग करना चाहेंगे, ताकि आप इसे वास्तविक समय में पता लगा सकें।

इसके अलावा, आप mobile-site-url-goes-here route को उचित route या URL के साथ बदलना चाहेंगे क्योंकि यह डेमोंस्ट्रेशन पर्पस के लिए केवल एक प्लेसहोल्डर है।

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

और इसके साथ, हमारा कस्टम मिडलवेयर टेस्ट करने के लिए लगभग तैयार है। फिलहाल, Laravel हमारे मिडलवेयर के बारे में जाने ऐसा कोई साधन नहीं है। ऐसा करने के लिए, आपको अपने मिडलवेयर को Laravel एप्लिकेशन से रजिस्टर करना होगा, और यह बिलकुल हमारे अगले सेक्शन का विषय होगा।

अगले सेक्शन में जाने से पहले, मैं यह दिखाना चाहूंगा कि आफ्टर मिडलवेयर कैसा दिखता है, अगर कोई यह जानने में उत्सुक है।

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

तो यह आफ्टर मिडलवेयर की कहानी थी।

हमारा कस्टम मिडलवेयर एक्शन में

इस सेक्शन में मिडिलवेयर को Laravel एप्लिकेशन के साथ रजिस्टर करने की प्रक्रिया का वर्णन किया गया है ताकि रिक्वेस्ट प्रोसेसिंग फ्लो (request processing flow) के दौरान इसे वास्तव में इनवॉक (invoke) किया जा सके।

आगे बढ़ो और app/Http/Kernel.php फाइल को खोलें और निम्नलिखित स्निपेट की तलाश करें।

जैसा कि आप देख सकते हैं, $middleware में मिडलवेयर के ऐरे को होल्ड करता है, जो कि Laravel की डिफ़ॉल्ट इंस्टालेशन के साथ आता है। यहां लिस्टेड मिडलवेयर को हर Laravel रिक्वेस्ट पर एक्सेक्यूट किया जाएगा, और इस प्रकार यह हमारे आदर्श मिडिलवेयर को स्थापित करने के लिए एक आदर्श कैंडिडेट है।

आगे बढ़ो और निम्नलिखित स्नैपेट (snippet) में दिखाए गए अनुसार हमारे कस्टम मिडलवेयर को शामिल करें।

अब, querystring mobile=1 के साथ अपने किसी भी Laravel routes तक पहुंचने का प्रयास करें, और इसे हमारे मिडलवेयर कोड को ट्रिगर करना चाहिए!

तो इस तरह आप अपने मिडलवेयर को रजिस्टर करने वाले हैं जिसे प्रत्येक रिक्वेस्ट पर चलने की आवश्यकता होती है। हालांकि, कभी-कभी आप केवल विशिष्ट routes के लिए अपने मिडलवेयर को चलाने की इच्छा रखते हैं। चलो $routeMiddleware का उपयोग करके इसे कैसे प्राप्त करें इसकी जांच करते हैं।

हमारे वर्तमान उदाहरण के संदर्भ में, मान लें कि यदि यूज़र्स आपकी साइट पर किसी विशिष्ट route का उपयोग करते हैं तो यूज़र्स को एक मोबाइल साइट पर रीडायरेक्ट किया जाएगा। इस परिदृश्य (scenario) में, आप अपने मिडलवेयर को $middleware लिस्ट में शामिल नहीं करना चाहते हैं।

इसके बजाय, आप मिडलवेयर को सीधे route डेफिनिशन में अटैच करना चाहते हैं, जैसा कि नीचे दिखाया गया है।

वास्तव में, हम एक कदम आगे जा सकते हैं और हमारे मिडलवेयर के लिए उपनाम बना सकते हैं ताकि आपको इनलाइन class names का उपयोग न करें।

फाइल app/Http/Kernel.php खोलें और $routeMiddleware के लिए देखें जो उपनामों (aliases) के मैपिंग को मिडलवेयर पर रखता है। चलो उस लिस्ट में हमारी एंट्री को शामिल करें, जैसा कि निम्नलिखित स्निपेट (snippet) में दिखाया गया है।

और संशोधित route परिभाषा इस तरह दिखती है।

और यह मिडिलवेयर को Laravel एप्लिकेशन के साथ रजिस्टर करने की कहानी है। यह बहुत सीधा था, है ना?

वास्तव में, हम इस आर्टिकल के अंत तक पहुंच चुके हैं, और मुझे आशा है कि आप इसे अच्छी तरह से पसंद करेंगे।

निष्कर्ष

किसी भी फ्रेमवर्क में आर्किटेक्चर के कांसेप्ट की खोज करना हमेशा रोमांचक स्टफ होता है, और इस आर्टिकल में हमने यही किया है क्योंकि हमने Laravel फ्रेमवर्क में मिडलवेयर का पता लगाया है।

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

उम्मीद है कि यह यात्रा उपयोगी थी और आर्टिकल ने आपको अपने ज्ञान को समृद्ध करने में मदद की है। इसके अलावा, अगर आप चाहते हैं कि मैं आगामी आर्टिकल्स में विशिष्ट विषयों को लेकर आऊं, तो आप मेरे लिए उस बारे में एक पंक्ति भी छोड़ सकते हैं।

यह आज के लिए काफी है, और नीचे दिए गए फ़ीड का उपयोग करके, यदि कोई प्रश्न हो, तो अपने प्रश्नों को पूछने में संकोच न करें!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.