अध्याय 4: रूटिंग (Routing)

अध्याय 4: रूटिंग (Routing)

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

रूट की मूल बातें (Basics of Routes)

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

रूट फाइल का स्थान (Location of Route File)

Laravel के सभी वेब रूट्स routes/web.php फाइल में परिभाषित होते हैं। यह फाइल आपके एप्लिकेशन के सभी HTTP रूट्स को नियंत्रित करती है।

सरल GET रूट (Simple GET Route)

एक सरल GET रूट को परिभाषित करने के लिए, web.php फाइल में निम्नलिखित कोड जोड़ें:

Route::get('/', function () {
return view('welcome');
});

यह रूट तब सक्रिय होता है जब कोई उपयोगकर्ता आपके एप्लिकेशन की रूट URL (http://your-app-url/) पर जाता है। यह welcome व्यू को रिटर्न करेगा।

रूट में डेटा पास करना (Passing Data to Route)

आप रूट में डेटा भी पास कर सकते हैं। उदाहरण:

Route::get('/greet', function () {
return "Hello, Welcome to Laravel!";
});

यह रूट http://your-app-url/greet पर “Hello, Welcome to Laravel!” मैसेज रिटर्न करेगा।

POST रूट (POST Route)

POST रूट को परिभाषित करने के लिए, Route::post का उपयोग करें:

Route::post('/submit', function () {
// फॉर्म डेटा प्रोसेसिंग का लॉजिक यहाँ लिखें
return 'Form submitted successfully!';
});

यह रूट तब सक्रिय होता है जब http://your-app-url/submit पर एक POST अनुरोध किया जाता है।

रूट पैरामीटर्स (Route Parameters)

आप रूट पैरामीटर्स का उपयोग कर सकते हैं ताकि रूट्स अधिक डायनामिक बन सकें:

Route::get('/user/{id}', function ($id) {
return 'User ID: ' . $id;
});

यह रूट तब सक्रिय होता है जब कोई उपयोगकर्ता http://your-app-url/user/1 पर जाता है। यहाँ, {id} एक डायनामिक पैरामीटर है।

वैकल्पिक रूट पैरामीटर्स (Optional Route Parameters)

आप रूट पैरामीटर्स को वैकल्पिक भी बना सकते हैं:

Route::get('/post/{slug?}', function ($slug = 'default-slug') {
return 'Post Slug: ' . $slug;
});

यह रूट तब सक्रिय होता है जब कोई उपयोगकर्ता http://your-app-url/post या http://your-app-url/post/some-slug पर जाता है।

नामित रूट्स (Named Routes)

आप रूट्स को एक नाम भी दे सकते हैं ताकि उन्हें आसानी से पहचाना जा सके:

Route::get('/profile', function () {
return 'User Profile';
})->name('profile');

इस नामित रूट को आप इस प्रकार उपयोग कर सकते हैं:

$url = route('profile');

रूट्स के लिए मिडलवेयर (Middleware for Routes)

आप मिडलवेयर का उपयोग कर सकते हैं ताकि रूट्स को सुरक्षा और अन्य फिल्टर प्रदान किए जा सकें:

Route::get('/admin', function () {
return 'Admin Page';
})->middleware('auth');

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

रूट्स में पैरामीटर्स (Route Parameters)

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

अनिवार्य रूट पैरामीटर्स (Required Route Parameters)

अनिवार्य रूट पैरामीटर्स को रूट्स में कर्ली ब्रेसेस {} के अंदर परिभाषित किया जाता है। ये पैरामीटर्स रूट का हिस्सा होते हैं और रूट के काम करने के लिए अनिवार्य होते हैं।

Route::get('/user/{id}', function ($id) {
return 'User ID: ' . $id;
});

उपरोक्त उदाहरण में, {id} एक अनिवार्य पैरामीटर है। जब आप http://your-app-url/user/1 पर जाते हैं, तो यह User ID: 1 प्रदर्शित करेगा।

वैकल्पिक रूट पैरामीटर्स (Optional Route Parameters)

वैकल्पिक रूट पैरामीटर्स को कर्ली ब्रेसेस {} के अंदर और एक प्रश्न चिह्न ? के साथ परिभाषित किया जाता है। ये पैरामीटर्स रूट के लिए अनिवार्य नहीं होते।

Route::get('/post/{slug?}', function ($slug = 'default-slug') {
return 'Post Slug: ' . $slug;
});

उपरोक्त उदाहरण में, {slug} एक वैकल्पिक पैरामीटर है। यदि आप http://your-app-url/post पर जाते हैं, तो यह Post Slug: default-slug प्रदर्शित करेगा। यदि आप http://your-app-url/post/some-slug पर जाते हैं, तो यह Post Slug: some-slug प्रदर्शित करेगा।

रूट पैरामीटर्स के लिए नियमित अभिव्यक्तियाँ (Regular Expressions for Route Parameters)

आप रूट पैरामीटर्स के लिए नियमित अभिव्यक्तियों (regular expressions) का उपयोग करके वैलिडेशन जोड़ सकते हैं।

Route::get('/user/{name}', function ($name) {
return 'User Name: ' . $name;
})->where('name', '[A-Za-z]+');

उपरोक्त उदाहरण में, {name} पैरामीटर केवल अक्षरों को स्वीकार करेगा। यदि आप http://your-app-url/user/John पर जाते हैं, तो यह User Name: John प्रदर्शित करेगा। लेकिन http://your-app-url/user/123 मान्य नहीं होगा।

कई रूट पैरामीटर्स (Multiple Route Parameters)

आप एक ही रूट में कई पैरामीटर्स का उपयोग कर सकते हैं।

Route::get('/product/{category}/{id}', function ($category, $id) {
return 'Category: ' . $category . ', Product ID: ' . $id;
});

उपरोक्त उदाहरण में, {category} और {id} दो अनिवार्य पैरामीटर्स हैं। जब आप http://your-app-url/product/electronics/1 पर जाते हैं, तो यह Category: electronics, Product ID: 1 प्रदर्शित करेगा।

रूट मॉडल बाइंडिंग (Route Model Binding)

Laravel स्वचालित रूप से मॉडल बाइंडिंग का समर्थन करता है, जिससे आप रूट पैरामीटर्स को सीधे मॉडल के उदाहरणों से बाइंड कर सकते हैं।

Route::get('/user/{user}', function (App\Models\User $user) {
return 'User Name: ' . $user->name;
});

उपरोक्त उदाहरण में, {user} पैरामीटर स्वचालित रूप से User मॉडल के उदाहरण से बाइंड हो जाएगा।

रूट पैरामीटर्स का उपयोग करके आप अपने Laravel एप्लिकेशन के रूट्स को अधिक डायनामिक और उपयोगी बना सकते हैं। इनका सही उपयोग करने से आप अपने एप्लिकेशन को अधिक फ्लेक्सिबल और इंटरैक्टिव बना सकते हैं।

रूट ग्रुपिंग और मिडलवेयर (Route Grouping and Middleware)

Laravel में रूट ग्रुपिंग और मिडलवेयर का उपयोग करके आप अपने रूट्स को अधिक व्यवस्थित और सुरक्षित बना सकते हैं। रूट ग्रुपिंग से आप समान गुणों वाले रूट्स को एक साथ समूहित कर सकते हैं, जबकि मिडलवेयर का उपयोग करके आप रूट्स पर सुरक्षा और अन्य कार्यात्मकताएँ लागू कर सकते हैं। आइए, रूट ग्रुपिंग और मिडलवेयर के बारे में विस्तार से समझें:

रूट ग्रुपिंग (Route Grouping)

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

उदाहरण: मिडलवेयर के साथ रूट ग्रुपिंग

Route::middleware(['auth'])->group(function () {
    Route::get('/dashboard', function () {
        return view('dashboard');
    });

    Route::get('/profile', function () {
        return view('profile');
    });

    Route::get('/settings', function () {
        return view('settings');
    });
});

उपरोक्त उदाहरण में, auth मिडलवेयर को तीनों रूट्स पर लागू किया गया है। यह सुनिश्चित करता है कि केवल प्रमाणित उपयोगकर्ता ही इन रूट्स तक पहुँच सकते हैं।

उदाहरण: प्रीफिक्स के साथ रूट ग्रुपिंग

Route::prefix('admin')->group(function () {
    Route::get('/users', function () {
        return view('admin.users');
    });

    Route::get('/posts', function () {
        return view('admin.posts');
    });
});

इस उदाहरण में, admin प्रीफिक्स को सभी रूट्स पर लागू किया गया है। परिणामस्वरूप, रूट्स http://your-app-url/admin/users और http://your-app-url/admin/posts बन जाते हैं।

मिडलवेयर (Middleware)

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

उदाहरण: मिडलवेयर को रूट पर लागू करना

Route::get('/profile', function () {
    return view('profile');
})->middleware('auth');

इस उदाहरण में, auth मिडलवेयर को /profile रूट पर लागू किया गया है, जो सुनिश्चित करता है कि केवल प्रमाणित उपयोगकर्ता ही इस रूट तक पहुँच सकते हैं।

कस्टम मिडलवेयर बनाना आप अपने कस्टम मिडलवेयर भी बना सकते हैं। इसके लिए निम्नलिखित चरणों का पालन करें:

  1. मिडलवेयर क्लास बनाएं:
    php artisan make:middleware CheckAge
  2. app/Http/Middleware/CheckAge.php फाइल में मिडलवेयर लॉजिक जोड़ें:
    namespace App\Http\Middleware;
    
    use Closure;
    use Illuminate\Http\Request;
    
    class CheckAge
    {
        public function handle(Request $request, Closure $next)
        {
            if ($request->age <= 18) {
                return redirect('home');
            }
    
            return $next($request);
        }
    }
    

     

  3. app/Http/Kernel.php फाइल में मिडलवेयर रजिस्टर करें:
    protected $routeMiddleware = [
        // ...
        'check.age' => \App\Http\Middleware\CheckAge::class,
    ];
    
  4. मिडलवेयर को रूट पर लागू करें:
    Route::get('/restricted', function () {
        return 'This is a restricted area.';
    })->middleware('check.age');
    

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



Index