Laravel
Beginner
1 min read
Middleware in Controllers and Responses
Example
<?php
// app/Http/Controllers/DocumentController.php
namespace App\Http\Controllers;
use App\Models\Document;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response;
class DocumentController extends Controller
{
public function __construct()
{
// Apply auth middleware to all except index
$this->middleware('auth')->except('index');
// Apply throttle to store
$this->middleware('throttle:10,1')->only('store');
}
public function show(Document $document): JsonResponse
{
// Authorize using a policy
$this->authorize('view', $document);
return response()->json([
'data' => $document,
], 200, ['X-Custom-Header' => 'value']);
}
public function download(Document $document): Response
{
$this->authorize('download', $document);
return response()->download(
storage_path('app/' . $document->path),
$document->original_name
);
}
public function destroy(Document $document): JsonResponse
{
$this->authorize('delete', $document);
$document->delete();
return response()->json(['message' => 'Deleted.'], 200);
}
}
Related Resources
Laravel Reference
Complete tag & property list
Laravel How-To Guides
Step-by-step practical guides
Laravel Exercises
Practice what you've learned
More in Laravel