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.
public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('titre'); $table->text('contenu'); $table->timestamps(); }); }
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', ]; }
https://artisan.page/11.x/installapi
php artisan install: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 :
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); } }
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']);
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 :
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 :