name: api-endpoint description: Creer un nouvel endpoint API REST Laravel. Utiliser automatiquement quand on demande de creer une route, un controller ou un endpoint API. argument-hint: "[Resource] [action: index|show|store|update|destroy]"
Creer un endpoint API REST
Ressource demandee : $ARGUMENTS
Etapes obligatoires
1. Controller
Creer ou modifier le controller dans backend/app/Http/Controllers/.
// Convention de reponse
return response()->json([
'success' => true,
'data' => $data,
]);
// Erreur
return response()->json([
'success' => false,
'message' => 'Description claire de l\'erreur',
], 422);
Regles :
- Injecter les modeles via route model binding (
Client $client) - Valider les inputs avec
$request->validate([...])ou une FormRequest - Toujours inclure
team_iddans les requetes (scope multi-tenant) - Logger les actions importantes avec
Log::info('[MODULE] ...') - Wrap les operations risquees dans try/catch
2. Route
Ajouter dans backend/routes/api.php a l'interieur du groupe auth:sanctum.
// Convention REST
Route::get('/resources', [ResourceController::class, 'index']);
Route::post('/resources', [ResourceController::class, 'store']);
Route::get('/resources/{resource}', [ResourceController::class, 'show']);
Route::put('/resources/{resource}', [ResourceController::class, 'update']);
Route::delete('/resources/{resource}', [ResourceController::class, 'destroy']);
3. Validation
Valider tous les inputs utilisateur. Ne jamais faire confiance aux donnees entrantes.
$request->validate([
'name' => 'required|string|max:255',
'email' => 'nullable|email',
'file' => 'nullable|file|mimes:pdf,jpg,png|max:10240',
]);
4. Storage (si fichiers)
- Upload persistant :
$file->store("dossier/{$client->id}")(va sur S3) - Ne jamais utiliser
Storage::disk('public')-> utiliser le disk par defaut (S3) - Fichiers temporaires :
Storage::disk('temp')
5. Verifier
Apres creation, verifier que la route est accessible :
docker exec laravel_app php artisan route:list --path=api/nouveau-endpoint