Skip to main content

Command Palette

Search for a command to run...

đŸŽ¯Different Ways of Routing in Laravel

Updated
â€ĸ3 min read
đŸŽ¯Different Ways of Routing in Laravel

In Laravel, routes are defined in the routes directory, specifically in the web.php file for web routes and api.php file for API routes. Here are different types of routes you can define in Laravel:

Simple Routing in Laravel

Basic Routes:

  • Define routes using the Route:: methods in the web.php file.

  • Example:

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

Route Parameters:

  • Define routes with parameters to capture values from the URL.

  • Example:

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

Optional Parameters:

  • Define optional parameters in routes.

  • Example:

Route::get('/user/{name?}', function ($name = null) {
       return 'User Name: ' . $name;
});

Named Routes:

  • Give a route a name for easier referencing.

  • Example:

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

Route Groups:

  • Group related routes together for applying middleware, prefixes, and more.

  • Example:

Route::prefix('admin')->group(function () {
       Route::get('/dashboard', function () {
              return 'Admin Dashboard';
        })->name('admin');
        // ...
});

Route with Middleware:

  • Apply middleware to routes for filtering HTTP requests.

  • Example:

Route::get('/admin', function () {
                // ...
})->middleware('admin')->name('admin');

Controller Routes:

  • Define routes that point to controller methods.

  • Example:

Route::get('/users', [UserController::class, 'index'])->name('users');

Resource Controller Routes:

  • Create routes for CRUD operations automatically using resource controllers.

  • Example:

Route::resource('photos', PhotoController::class);

API Resource Routes:

  • API resource routes are similar to resource routes but are typically used for building API endpoints. They generate routes for standard CRUD operations but without the need for rendering views.

  • Example:

Route::apiResource('products', ProductController::class);

Advance Routing in Laravel

Route Prefixing:

  • Prefix a group of routes with a common path.

  • Example:

Route::prefix('admin')->group(function () {
    Route::get('/dashboard', [AdminController::class, 'dashboard']);
});

Combined Route Group with Prefix and Middleware:

Route::group(['prefix' => 'admin','middleware' => ['auth']], function() {
    Route::get('/dashboard',[AdminController::class, 'dashboard'])->name('dashboard');
});

Combined Named Route Group with Prefix and Middleware:

Route::name('admin.')
    ->prefix('admin')
    ->middleware(['auth'])
    ->group(function () {

    Route::get('/users', function () {
        // Route assigned name "admin.users"...
        // Matches The "/admin/users" URL
        // This /users URI only for logged in users
    })->name('users');
});

// Or,

Route::name('admin.')
    ->group(['prefix' => 'admin','middleware' => ['auth']], function() {
        // Route assigned name "admin.dashboard"
        // Matches The "/admin/dashboard" URL
        // This /dashboard URI only for logged in users
    Route::get('/dashboard',[AdminController::class, 'dashboard'])->name('dashboard');
});

Controllers Route Group:

Route::controller(OrderController::class)->group(function () {
    Route::get('/orders/{id}', 'show');
    Route::post('/orders', 'store');
});

Route Middleware Group:

Route::middleware(['auth', 'is_admin'])->group(function () {
    Route::get('/', function () {
        // Uses auth & is_admin middlewares
    });

    Route::get('/user/profile', function () {
        // Uses auth & is_admin middlewares
    });
});

Thank you for taking the time to delve into this article.

Happy Learning! 🚀

#laravel_routing #laravel #php

A

Very much informative and concise . Wish more from this author

1
K

Thanks for sharing this; lots more to routing than I'd expected and good to know the different options.

1

More from this blog

Proxy vs Reverse Proxy

āχāĻ¨ā§āϟāĻžāϰāύ⧇āϟ āĻĻ⧁āύāĻŋāϝāĻŧāĻžāϝāĻŧ 'āĻĒā§āϰāĻ•ā§āϏāĻŋ' āĻ•āĻĨāĻžāϟāĻŋāϰ āĻŽāĻžāύ⧇ āĻšāϞ⧋ 'āĻ•āĻžāϰ⧋ āĻšāϝāĻŧ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž'āĨ¤ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āĻŋāĻ‚-āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒā§āϰāĻ•ā§āϏāĻŋ āϏāĻžāĻ°ā§āĻ­āĻžāϰ āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŽāĻžāĻ§ā§āϝāĻŽ āϝāĻž āĻ•ā§āϞāĻžāϝāĻŧ⧇āĻ¨ā§āϟ (āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀) āĻāĻŦāĻ‚ āϏāĻžāĻ°ā§āĻ­āĻžāϰ (āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ)-āĻāϰ āĻŽāĻžāĻā§‡ āĻĻāĻžāρāĻĄāĻŧ

Apr 10, 20263 min read

How to Design Secure Web API Access

āχāĻ¨ā§āϟāĻžāϰāύ⧇āĻŸā§‡ āϝāĻ–āύ āφāĻŽāϰāĻž āϕ⧋āύ⧋ āĻāĻĒāĻŋāφāχ (API) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ, āϤāĻ–āύ āϏāĻŦāĻšā§‡ā§Ÿā§‡ āĻŦ⧜ āϚāĻŋāĻ¨ā§āϤāĻžāϰ āĻŦāĻŋāώ⧟ āĻĨāĻžāϕ⧇ āϏāĻŋāĻ•āĻŋāωāϰāĻŋāϟāĻŋāĨ¤ āĻ…āĻ°ā§āĻĨāĻžā§Ž, āϝ⧇ āĻŦā§āϝāĻ•ā§āϤāĻŋ āĻāĻĒāĻŋāφāχāϟāĻŋ āĻ•āϞ āĻ•āϰāϛ⧇, āϏ⧇ āφāϏāϞ⧇ āϏāĻ āĻŋāĻ• āĻŦā§āϝāĻ•ā§āϤāĻŋ āĻ•āĻŋ āύāĻž? āĻāϟāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϧāĻžāύāϤ āĻĻ⧁āϟāĻŋ āϜāύāĻĒā§āϰāĻŋ⧟

Apr 10, 20263 min read

How to Design Effective and Safe APIs

ā§§. Resource Names āύāĻŋāϝāĻŧāĻŽ:āĻŦāĻŋāĻļ⧇āĻˇā§āϝ (nouns) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ āĻ•ā§āϰāĻŋāϝāĻŧāĻž (verb) āϝ⧇āĻŽāύ query, get URL-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ…āύ⧁āϚāĻŋāϤāĨ¤ āϭ⧁āϞ: GET /querycarts/123āĻ āĻŋāĻ•: GET /carts/123 āĻŦāĻšā§āĻŦāϚāύ (plurals) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āφāĻŦāĻļā§āϝāĻ•:āϭ⧁āϞ:

Apr 10, 20263 min read

āϝāĻ–āύ āφāĻĒāύāĻŋ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āĻāĻ•āϟāĻŋ URL āϟāĻžāχāĻĒ āĻ•āϰ⧇āύ āϤāĻ–āύ āϕ⧀ āϘāĻŸā§‡? | What Happens When You Type a URL Into Your Browser? (Simple Explanation)

āϧāĻžāĻĒ ā§§: āĻŦāĻŦ URL āϟāĻžāχāĻĒ āĻ•āϰ⧇ āĻŦāĻŦ āϤāĻžāϰ āĻŦā§āϰāĻžāωāϜāĻžāϰ⧇ āϟāĻžāχāĻĒ āĻ•āϰ⧇: http://example.com/product/electric/phone āĻāĻ–āĻžāύ⧇: http:// = āĻ¸ā§āĻ•āĻŋāĻŽ (āϕ⧀āĻ­āĻžāĻŦ⧇ āϏāĻ‚āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻŦāϞ⧇) example.com = āĻĄā§‹āĻŽā§‡āχāύ āύāĻžāĻŽ (āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāĻŸā§‡āϰ āĻ āĻŋāĻ•āĻžāύāĻž) product/

Apr 10, 20261 min read

Untitled Publication

12 posts