Création d’une API RESTful avec Laravel
Une API REST est une interface de programmation d'application (API) qui respecte les principes de conception du style d'architecture REST, abréviation de « REpresentational State Transfer ». Ce style regroupe un ensemble de règles et de consignes pour la création d'API web.
Étapes du projet "Gestion de produits"
1/ Créer un nouveau projet Laravel
- Créer le projet “api-articles”
- Configurer la base de données “dbArticles”
- Créer la migration et le modèle Article
- Modifier la migration article
public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('titre'); $table->text('contenu'); $table->timestamps(); }); }
- Exécuter la migration
- Modifier le modèle :
class Article extends Model { /** @use HasFactory<\Database\Factories\UserFactory> */ use HasFactory, Notifiable; /** * The attributes that are mass assignable. * * @var list<string> */ protected $fillable = [ 'titre', 'contenu', ]; }
2/ Installer le gestionnaire d'api d'Artisan
https://artisan.page/11.x/installapi
php artisan install:api
3/ Création des contrôleurs pour l’API
Après avoir défini vos routes, il est temps de créer les contrôleurs pour votre API. Les contrôleurs sont au cœur d’une application Laravel et sont responsables du traitement des requêtes HTTP reçues par votre application.
Voici quelques avantages à utiliser les contrôleurs lors de la création d’une API avec Laravel :
- Ils permettent une organisation claire du code.
- Ils offrent un moyen efficace de gérer différentes actions liées à une même route.
- Ils favorisent un meilleur découplage entre logique métier et logique présentation.
- Grâce aux middlewares associés, ils facilitent le filtrage des requêtes HTTP
Créer un contrôleur pour gérer les articles via l'API :
php artisan make:controller Api/ArticleController --api
Créer un modèle et le compléter
php artisan make:model Article
Cela créera un contrôleur dans app/Http/Controllers/Api/ArticleController.php. Modifiez ce fichier pour définir les actions CRUD :
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\Article; use Illuminate\Http\Request; class ArticleController extends Controller { public function index() { return Article::all(); } public function store(Request $request) { $validated = $request->validate([ 'titre' => 'required|string|max:255', 'contenu' => 'required|string', ]); $article = Article::create($validated); return response()->json($article, 201); } public function show($id) { return Article::findOrFail($id); } public function update(Request $request, $id) { $validated = $request->validate([ 'titre' => 'required|string|max:255', 'contenu' => 'required|string', ]); $article = Article::findOrFail($id); $article->update($validated); return response()->json($article, 200); } public function destroy($id) { $article = Article::findOrFail($id); $article->delete(); return response()->json(null, 204); } }
4/ Définition des routes API dans Laravel
Toute application web repose sur le routage, qui oriente les requêtes vers le bon contrôleur. Avec Laravel, les développeurs peuvent facilement définir un ensemble de routes API pour une utilisation spécifique dans leurs applications.
Dans le fichier routes/api.php, ajoutez les routes pour les actions CRUD des articles :
use App\Http\Controllers\Api\ArticleController; Route::get('articles', [ArticleController::class, 'index']); Route::post('articles', [ArticleController::class, 'store']); Route::get('articles/{id}', [ArticleController::class, 'show']); Route::put('articles/{id}', [ArticleController::class, 'update']); Route::delete('articles/{id}', [ArticleController::class, 'destroy']);
5/ Gestion des requêtes et réponses en JSON
Le dernier aspect, mais non le moindre, de la création d’une API RESTful avec Laravel consiste à gérer les requêtes et réponses au format JSON. En effet, JSON est le format de données standard pour communiquer avec une API RESTful.
Laravel fournit des moyens faciles et rapides pour créer des réponses en JSON grâce à ses différentes méthodes intégrées dans les classes Response et JsonResponse. De plus, Laravel offre également des fonctionnalités pour traiter efficacement les requêtes entrantes au format JSON.
En somme, l’art de créer une API Restful avec Laravel repose sur ces trois piliers :
- définition des routes API,
- création des contrôleurs,
- gestion des requêtes/réponses au format JSON.
6/ Test de l’API avec Postman ou CURL
Commande curl pour créer un article
curl -X POST http://192.168.56.56:8000/api/articles \ -H "Accept:application/json" \ -H "Content-Type:application/json" \ -d '{"titre": "Mon premier article", "contenu": "Ceci est le contenu de l\'article."}'
Explication des paramètres :
- -X POST : Spécifie qu'il s'agit d'une requête POST.
- http://192.168.56.56:8000/api/articles : L'URL où envoyer la requête (modifie si nécessaire, par exemple, si tu utilises Homestead).
- -H “Accept: application/json” : Indique à Laravel que l'on attend une réponse JSON.
- -H “Content-Type: application/json” : Indique que l'on envoie des données JSON.
- -d '{“titre”: “Mon premier article”, “contenu”: “Ceci est le contenu de l\'article.”}' : Données JSON envoyées au serveur.