Par défaut, dans Laravel, le fichier de route API (api.php) n’est pas visible et il n’est pas possible de définir des routes API directement. Cependant, si vous souhaitez définir des routes API, vous devez publier le fichier de route API à l’aide de la commande ci-dessous. Cette commande publiera le fichier api.php et installera également Sanctum.
php artisan install:api
Une fois la commande exécutée, un nouveau fichier api.php sera créé dans le répertoire routes.
routes/api.php :
<?php
use Illuminate\Auth\Middleware\Authenticate;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware(Authenticate::using('sanctum'));
Vous pouvez maintenant définir et gérer vos routes API dans le fichier api.php.
Ce fichier est prêt à être utilisé avec Sanctum pour gérer l’authentification des API.
Configurer Sanctum
Laravel Sanctum est un package qui permet de gérer les authentifications basées sur les tokens pour les API. Une fois que Sanctum est installé par la commande php artisan install:api, voici comment vous pouvez configurer rapidement Sanctum pour votre application :
Publiez le fichier de configuration Sanctum :
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Exécutez la migration pour ajouter les tables nécessaires dans la base de données :
php artisan migrate
Configurez le middleware pour utiliser Sanctum dans config/auth.php :
'guards' => [
'sanctum' => [
'driver' => 'sanctum',
],
],
Définir des routes dans api.php
<?php
use Illuminate\Support\Facades\Route;
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('/posts', [PostController::class, 'index']); // Récupérer tous les articles
Route::post('/posts', [PostController::class, 'store']); // Créer un nouvel article
Route::put('/posts/{id}', [PostController::class, 'update']); // Mettre à jour un article
Route::delete('/posts/{id}', [PostController::class, 'destroy']); // Supprimer un article
Route::get(‘/posts’, [PostController::class, ‘index’]); // Récupérer tous les articles
Route::post(‘/posts’, [PostController::class, ‘store’]); // Créer un nouvel article
Route::put(‘/posts/{id}’, [PostController::class, ‘update’]); // Mettre à jour un article
Route::delete(‘/posts/{id}’, [PostController::class, ‘destroy’]); // Supprimer un article
Tester les routes API
php artisan serve
Accédez aux routes dans un outil comme Postman ou cURL. Par exemple :
- GET /api/posts pour récupérer tous les articles.
- POST /api/posts pour en créer un.
Exemple Complet : Création d’une API CRUD pour les Articles
Créer le modèle et la migration pour les articles :
php artisan make:model Article -m
Dans le fichier de migration généré (create_articles_table), définissez les colonnes nécessaires :
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
Exécutez la migration :
php artisan migrate
Créer un contrôleur pour gérer l’API :
php artisan make:controller ArticleController
Ajoutez les méthodes dans le contrôleur :
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index()
{
return Article::all();
}
public function store(Request $request)
{
$article = Article::create($request->all());
return response()->json($article, 201);
}
public function show($id)
{
return Article::findOrFail($id);
}
public function update(Request $request, $id)
{
$article = Article::findOrFail($id);
$article->update($request->all());
return response()->json($article);
}
public function destroy($id)
{
Article::destroy($id);
return response()->json(['message' => 'Article deleted']);
}
}
Ajouter les routes dans api.php :
Route::apiResource(‘articles’, ArticleController::class);
Route::apiResource('articles', ArticleController::class);
Points Importants à Noter
Sanctum est essentiel si vous souhaitez sécuriser vos routes API.
Une bonne gestion des middlewares (auth:sanctum, throttle) améliore la sécurité et la performance.
Vous pouvez personnaliser les routes et les utiliser pour créer des API RESTful.