Concevoir une API REST robuste et scalable avec Laravel
Resource controllers, API resources, authentification, versioning, rate limiting,les briques d'une API Laravel prête pour la production.
Laravel est l'un des meilleurs frameworks pour construire des API REST rapidement. Mais "rapide" ne signifie pas "production-ready" par défaut. Quelques décisions structurelles prises tôt détermineront si votre API scale gracieusement ou devient un fardeau de maintenance.
Structure : API Resources plutôt que tableaux bruts
Ne jamais retourner les modèles Eloquent directement depuis les contrôleurs. Utiliser les API Resources pour contrôler exactement ce que l'API expose,et découpler le schéma de base de données du contrat API.
// Mauvais : expose tout, y compris les champs internes
return response()->json($user);
// Bien : contrat API contrôlé et versionné
class UserResource extends JsonResource {
public function toArray(Request $request): array {
return [
'id' => $this->id,
'name' => $this->name,
'email' => $this->email,
'created_at' => $this->created_at->toISOString(),
];
}
}
return new UserResource($user);Versioning dès le premier jour
Versionner l'API dès le départ, même si on n'a que v1. Ça ne coûte rien au départ et évite de casser les clients plus tard. Utiliser le versioning URI : `/api/v1/users`, `/api/v2/users`.
Authentification avec Sanctum ou Passport
Utiliser Laravel Sanctum pour l'auth token SPA/mobile. Utiliser Laravel Passport uniquement pour un serveur OAuth2 complet (clients tiers). Sanctum couvre 90% des cas avec bien moins de complexité.
Rate limiting et throttling
// routes/api.php
Route::middleware(['auth:sanctum', 'throttle:60,1'])->group(function () {
Route::apiResource('users', UserController::class);
});
// Throttle custom : 10 requêtes/minute pour les endpoints coûteux
Route::middleware('throttle:10,1')->post('/reports/generate', [ReportController::class, 'generate']);- ✓Toujours valider les entrées au niveau du Form Request,jamais dans le contrôleur
- ✓Retourner des erreurs cohérentes au format RFC 7807 Problem Details
- ✓Logger toutes les réponses 4xx/5xx pour le monitoring
- ✓Utiliser les headers ETag pour les endpoints GET cache-friendly
Besoin d'aide sur ce sujet ? Conception d'API REST
Découvrir ce service →