GitHub

HTTP Request

The Request class provides an object-oriented way to interact with the current HTTP request, including input data, headers, and file uploads.

Accessing The Request

Get the current request instance:

use Spark\Http\Request;

// In controller method
public function store(Request $request)
{
    // Use request object
}

Using the helper function:

// Get entire request
$request = request();

// Get specific input value
$name = request('name', 'default');

// Get multiple inputs
$inputs = request(['name', 'email']);

Request Data

Retrieving Input

// Get query parameter
$id = $request->query('id');

// Get POST parameter
$name = $request->post('name');

// Get all input
$all = $request->all();

// Get filtered input
$filtered = $request->all(['name', 'email']);

Checking For Input

if ($request->hasQuery('page')) {
    // Has query parameter
}

if ($request->hasPost('email')) {
    // Has POST parameter
}

File Uploads

// Get uploaded file
$file = $request->file('avatar');

// Check if file exists
if ($request->hasFile('avatar')) {
    // Process file
}

Request Information

// Get request method
$method = $request->getMethod();

// Get request path
$path = $request->getPath();

// Get full URL
$url = $request->getUrl();

// Get client IP
$ip = $request->ip();

Request Headers

// Get header
$header = $request->header('X-Custom-Header');

// Check content type
if ($request->accept('application/json')) {
    // Client accepts JSON
}

Request Type

// Check request method
if ($request->isMethod('post')) {
    // POST request
}

// Check AJAX request
if ($request->isAjax()) {
    // AJAX request
}

// Check JSON expected
if ($request->expectsJson()) {
    // Return JSON response
}

Input Validation & Sanitization

Request validation:

$attributes = $request->validate([
    'name' => ['required'], 
    'email' => [required, 'email'
]]);

Using the validator helper:

try {
    $sanitizer = validator([
        'name' => 'required|string',
        'email' => 'required|email'
    ]);
    
    // Data is validated and sanitized
    $email = $sanitizer->email('email');
    $name = $sanitizer->text('name');
} catch (Exception $e) {
    // Handle validation error
    // $e->getMessage(); // the validation error message
}

Using the input helper:

// Get sanitized input
$inputSanitizer = input(['name', 'email']);
$name = $inputSanitizer->text('name');

// Get raw input
$rawInput = input(['name', 'email'], false);
$name = $rawInput['name'];

Route Parameters

// For route '/user/{id}'
$id = $request->getRouteParam('id');

// Check if parameter exists
if ($request->hasRouteParam('id')) {
    // Parameter exists
}

Modifying Requests

// Set query parameter
$request->setQueryParam('page', 2);

// Set POST parameter
$request->setPostParam('status', 'active');

// Merge parameters
$request->mergePostParams(['role' => 'admin']);
Note: Request modifications only affect the current request instance and won't change actual superglobals.