Bird
Raised Fist0
Laravelframework~5 mins

HTTP method routing (GET, POST, PUT, DELETE) in Laravel

Choose your learning style10 modes available
Introduction

HTTP method routing helps your Laravel app know what to do when someone visits a URL or sends data. It tells the app how to handle different actions like showing a page, saving data, updating, or deleting.

When you want to show a page or data to users (GET).
When users submit a form to add new information (POST).
When you need to update existing information (PUT).
When you want to remove data from your app (DELETE).
Syntax
Laravel
Route::get('/url', [Controller::class, 'method']);
Route::post('/url', [Controller::class, 'method']);
Route::put('/url', [Controller::class, 'method']);
Route::delete('/url', [Controller::class, 'method']);

Each method matches a specific HTTP request type.

Use controllers to keep your code organized and clean.

Examples
This route shows a list of users when someone visits '/users'.
Laravel
Route::get('/users', [UserController::class, 'index']);
This route saves new user data sent from a form.
Laravel
Route::post('/users', [UserController::class, 'store']);
This route updates user information for the user with the given ID.
Laravel
Route::put('/users/{id}', [UserController::class, 'update']);
This route deletes the user with the given ID.
Laravel
Route::delete('/users/{id}', [UserController::class, 'destroy']);
Sample Program

This example shows how to set up routes for all four HTTP methods in Laravel. The UserController handles showing users, adding a new user, updating a user, and deleting a user. Each method returns a JSON response.

Laravel
<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;

Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::put('/users/{id}', [UserController::class, 'update']);
Route::delete('/users/{id}', [UserController::class, 'destroy']);

// UserController.php
namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UserController extends Controller
{
    private static $users = [
        1 => ['name' => 'Alice'],
        2 => ['name' => 'Bob'],
    ];

    public function index()
    {
        return response()->json(self::$users);
    }

    public function store(Request $request)
    {
        $newId = count(self::$users) + 1;
        self::$users[$newId] = ['name' => $request->input('name')];
        return response()->json(['message' => 'User added', 'user' => self::$users[$newId]], 201);
    }

    public function update(Request $request, $id)
    {
        if (!isset(self::$users[$id])) {
            return response()->json(['message' => 'User not found'], 404);
        }
        self::$users[$id]['name'] = $request->input('name');
        return response()->json(['message' => 'User updated', 'user' => self::$users[$id]]);
    }

    public function destroy($id)
    {
        if (!isset(self::$users[$id])) {
            return response()->json(['message' => 'User not found'], 404);
        }
        unset(self::$users[$id]);
        return response()->json(['message' => 'User deleted']);
    }
}
OutputSuccess
Important Notes

Laravel routes are defined in the routes/web.php or routes/api.php files.

Use Route::resource() for quick RESTful routing if you want all methods automatically.

Remember to test your routes with tools like Postman or your browser.

Summary

HTTP method routing tells Laravel how to respond to different types of requests.

GET is for reading data, POST for creating, PUT for updating, and DELETE for removing.

Use controllers to keep your routing logic clean and organized.

Practice

(1/5)
1. Which HTTP method in Laravel routing is typically used to retrieve data from the server without changing it?
easy
A. GET
B. POST
C. PUT
D. DELETE

Solution

  1. Step 1: Understand HTTP methods purpose

    GET requests are designed to fetch or read data without modifying it.
  2. Step 2: Match method to Laravel routing

    In Laravel, routes defined with GET respond to data retrieval requests.
  3. Final Answer:

    GET -> Option A
  4. Quick Check:

    GET = Read data [OK]
Hint: GET is for reading data, no changes made [OK]
Common Mistakes:
  • Confusing POST with GET for data retrieval
  • Using PUT or DELETE for fetching data
  • Thinking GET modifies data
2. Which of the following is the correct Laravel route definition for handling a POST request to '/submit'?
easy
A. Route::get('/submit', [FormController::class, 'store']);
B. Route::post('/submit', [FormController::class, 'store']);
C. Route::put('/submit', [FormController::class, 'store']);
D. Route::delete('/submit', [FormController::class, 'store']);

Solution

  1. Step 1: Identify the HTTP method for creating data

    POST is used to send data to the server, typically for creating resources.
  2. Step 2: Match Laravel route syntax for POST

    Route::post() defines a route that listens for POST requests.
  3. Final Answer:

    Route::post('/submit', [FormController::class, 'store']); -> Option B
  4. Quick Check:

    POST route syntax = Route::post('/submit', [FormController::class, 'store']); [OK]
Hint: Use Route::post() for form submissions [OK]
Common Mistakes:
  • Using Route::get() for POST requests
  • Mixing PUT or DELETE with form submission
  • Incorrect method name in route definition
3. Given the following Laravel routes, what HTTP method should you use to update a user's profile?
Route::get('/user/{id}', [UserController::class, 'show']);
Route::post('/user', [UserController::class, 'store']);
Route::put('/user/{id}', [UserController::class, 'update']);
Route::delete('/user/{id}', [UserController::class, 'destroy']);
medium
A. PUT
B. GET
C. POST
D. DELETE

Solution

  1. Step 1: Identify route for updating data

    The route with Route::put() is used for updating existing resources.
  2. Step 2: Match HTTP method to update action

    PUT method is the standard for updating a resource like a user profile.
  3. Final Answer:

    PUT -> Option A
  4. Quick Check:

    Update = PUT method [OK]
Hint: PUT updates existing data, POST creates new [OK]
Common Mistakes:
  • Using POST instead of PUT for updates
  • Confusing GET with update actions
  • Using DELETE to update data
4. You wrote this Laravel route to delete a post:
Route::post('/post/{id}', [PostController::class, 'destroy']);

Why might this cause a problem when trying to delete a post?
medium
A. The URL should not include an {id} parameter
B. Route syntax is incorrect for any HTTP method
C. The controller method name 'destroy' is invalid
D. POST method is not intended for deleting resources

Solution

  1. Step 1: Understand HTTP methods for resource deletion

    DELETE method is the standard for deleting resources, not POST.
  2. Step 2: Identify mismatch in route method

    Using Route::post() for deletion can cause unexpected behavior or conflicts.
  3. Final Answer:

    POST method is not intended for deleting resources -> Option D
  4. Quick Check:

    DELETE method needed for deletion [OK]
Hint: Use Route::delete() for deleting resources [OK]
Common Mistakes:
  • Using POST instead of DELETE for deletions
  • Ignoring HTTP method conventions
  • Assuming controller method name causes error
5. You want to create a Laravel API that supports full CRUD operations on a 'product'. Which set of HTTP methods and routes correctly matches the standard RESTful pattern?
hard
A. Route::put('/product', [ProductController::class, 'index']);\nRoute::delete('/product', [ProductController::class, 'store']);\nRoute::get('/product/{id}', [ProductController::class, 'update']);\nRoute::post('/product/{id}', [ProductController::class, 'destroy']);
B. Route::post('/product', [ProductController::class, 'index']);\nRoute::get('/product', [ProductController::class, 'store']);\nRoute::delete('/product/{id}', [ProductController::class, 'update']);\nRoute::put('/product/{id}', [ProductController::class, 'destroy']);
C. Route::get('/product', [ProductController::class, 'index']);\nRoute::post('/product', [ProductController::class, 'store']);\nRoute::put('/product/{id}', [ProductController::class, 'update']);\nRoute::delete('/product/{id}', [ProductController::class, 'destroy']);
D. Route::delete('/product', [ProductController::class, 'index']);\nRoute::put('/product', [ProductController::class, 'store']);\nRoute::post('/product/{id}', [ProductController::class, 'update']);\nRoute::get('/product/{id}', [ProductController::class, 'destroy']);

Solution

  1. Step 1: Match HTTP methods to CRUD actions

    GET for reading list (index), POST for creating (store), PUT for updating, DELETE for deleting.
  2. Step 2: Verify route patterns and controller methods

    Routes in Route::get('/product', [ProductController::class, 'index']);\nRoute::post('/product', [ProductController::class, 'store']);\nRoute::put('/product/{id}', [ProductController::class, 'update']);\nRoute::delete('/product/{id}', [ProductController::class, 'destroy']); correctly pair HTTP methods with controller actions and URL patterns.
  3. Final Answer:

    Route::get('/product', [ProductController::class, 'index']);\nRoute::post('/product', [ProductController::class, 'store']);\nRoute::put('/product/{id}', [ProductController::class, 'update']);\nRoute::delete('/product/{id}', [ProductController::class, 'destroy']); -> Option C
  4. Quick Check:

    GET, POST, PUT, DELETE with correct methods = Route::get('/product', [ProductController::class, 'index']);\nRoute::post('/product', [ProductController::class, 'store']);\nRoute::put('/product/{id}', [ProductController::class, 'update']);\nRoute::delete('/product/{id}', [ProductController::class, 'destroy']); [OK]
Hint: Follow REST: GET-read, POST-create, PUT-update, DELETE-remove [OK]
Common Mistakes:
  • Mixing HTTP methods and controller actions
  • Incorrect URL patterns for resource IDs
  • Using wrong methods for CRUD operations
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard