Intermédiaire60 min40 XP
Objectifs de cette leçon
- Développer un backend avec l'assistance IA
- Structurer une API REST avec des prompts clairs
- Tester et documenter l'API générée
Développer un backend API REST 🖥️
Qu'est-ce qu'une API REST ?
Une API REST (Representational State Transfer) est un interface qui permet au frontend (web/mobile) de communiquer avec le backend (serveur) via des requêtes HTTP.
Le flux d'une requête
Client (navigateur/mobile) │ │ GET /api/users/1 ↓ Route / Controller │ │ $user = User::find(1); ↓ Base de données │ │ SELECT * FROM users WHERE id = 1 ↓ Réponse JSON │ │ {"id": 1, "name": "Alice", "email": "alice@ex.com"} ↓ Client reçoit les données
Les opérations CRUD
| Méthode | URL | Description | SQL |
|---|---|---|---|
| GET | /api/users | Lister tous les utilisateurs | SELECT * FROM users |
| GET | /api/users/1 | Détail d'un utilisateur | SELECT * FROM users WHERE id=1 |
| POST | /api/users | Créer un utilisateur | INSERT INTO users... |
| PUT | /api/users/1 | Modifier un utilisateur | UPDATE users SET... WHERE id=1 |
| DELETE | /api/users/1 | Supprimer un utilisateur | DELETE FROM users WHERE id=1 |
Exemple avec Laravel
Modèle
<?php // app/Models/User.php class User extends Model { protected $fillable = ['name', 'email', 'password']; protected $hidden = ['password', 'remember_token']; }
Controller
<?php // app/Http/Controllers/Api/UserController.php class UserController extends Controller { public function index() { $users = User::paginate(10); return response()->json($users); } public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'password' => 'required|min:8|confirmed', ]); $validated['password'] = Hash::make($validated['password']); $user = User::create($validated); return response()->json($user, 201); } public function show($id) { $user = User::findOrFail($id); return response()->json($user); } public function update(Request $request, $id) { $user = User::findOrFail($id); $validated = $request->validate([ 'name' => 'sometimes|string|max:255', 'email' => 'sometimes|email|unique:users,email,' . $id, ]); $user->update($validated); return response()->json($user); } public function destroy($id) { User::findOrFail($id)->delete(); return response()->json(['message' => 'Utilisateur supprimé']); } }
Routes
<?php // routes/api.php Route::post('/auth/register', [AuthController::class, 'register']); Route::post('/auth/login', [AuthController::class, 'login']); Route::middleware('auth:sanctum')->group(function () { Route::get('/users', [UserController::class, 'index']); Route::get('/users/{id}', [UserController::class, 'show']); Route::put('/users/{id}', [UserController::class, 'update']); Route::delete('/users/{id}', [UserController::class, 'destroy']); });
Exemple avec Node.js/Express
// routes/users.js const express = require('express'); const router = express.Router(); const { Pool } = require('pg'); const pool = new Pool({ host: process.env.DB_HOST, database: process.env.DB_NAME, user: process.env.DB_USER, password: process.env.DB_PASSWORD, }); router.get('/users', async (req, res) => { const { rows } = await pool.query('SELECT * FROM users ORDER BY id'); res.json(rows); }); router.post('/users', async (req, res) => { const { name, email, password } = req.body; const { rows } = await pool.query( 'INSERT INTO users (name, email, password) VALUES ($1, $2, $3) RETURNING *', [name, email, password] ); res.status(201).json(rows[0]); }); module.exports = router;
Utiliser l'IA pour créer l'API
Bon prompt :
Crée une API REST Laravel pour une application de gestion de livres. Modèle Book : title, author, isbn, category, available (boolean) Routes : - GET /api/books (liste paginée) - POST /api/books (création avec validation) - GET /api/books/{id} (détail) - PUT /api/books/{id} (modification) - DELETE /api/books/{id} (suppression) Utilise Eloquent, retourne du JSON, gère les erreurs. Les routes GET sont publiques, les autres nécessitent auth:sanctum.
Exercices 🎯
- API : Créez une API CRUD pour une ressource "Post" (title, content, published).
- Validation : Ajoutez la validation des données sur chaque route.
- Auth : Protégez les routes de modification avec l'authentification.
- Tests : Écrivez 3 tests pour votre API.
Prochaine leçon : Développer une application web.
Flux d'une requête API REST
InteractifÉtape 1/6
Simulateur de requêtes API
GET /api/users
Réponse :
{
"users": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
]
}