Laravel
Beginner
1 min read
API Versioning and Error Handling
Example
<?php
// routes/api.php — versioned API groups
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->name('api.v1.')->group(function () {
require base_path('routes/api_v1.php');
});
Route::prefix('v2')->name('api.v2.')->group(function () {
require base_path('routes/api_v2.php');
});
// app/Exceptions/Handler.php — custom API error responses
namespace App\Exceptions;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Auth\AuthenticationException;
use Throwable;
class Handler extends ExceptionHandler
{
public function register(): void
{
$this->renderable(function (ModelNotFoundException $e, $request) {
if ($request->expectsJson()) {
return response()->json(['message' => 'Resource not found.'], 404);
}
});
$this->renderable(function (AuthenticationException $e, $request) {
if ($request->expectsJson()) {
return response()->json(['message' => 'Unauthenticated.'], 401);
}
});
}
}
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