Api Laravel
Api Laravel
Api Laravel
Laravel Eloquent est un moyen simple d’interagir avec votre base de données. Il s’agit d’un
mappeur objet-relationnel (Object-Relational Mapper ou ORM) qui simplifie les complexités
des bases de données en fournissant un modèle pour interagir avec les tables.
En tant que tel, Laravel Eloquent dispose d’excellents outils pour créer et tester des API afin
de soutenir votre développement. Dans cet article pratique, vous verrez à quel point il est
facile de créer et de tester des API à l’aide de Laravel.
Dans cette démonstration, vous commencerez par créer un modèle que vous pourrez utiliser
pour construire l’API et la table de la base de données. Ensuite, vous verrez comment ajouter
un contrôleur en tant que couche de logique commerciale et une route pour compléter l’API.
Vous apprendrez ensuite à tester les API à l’aide de Postman avant de vous concentrer sur
l’authentification et la gestion des erreurs.
Pré-requis
Pour commencer, voici ce dont vous aurez besoin :
Laravel version 8 ou 9
Composer
Postman
XAMPP
Connaissance de base des API et de PHP
Pour démarrer le serveur, exécutez la commande suivante, qui lance le serveur d’application
sur le port 8000 :
cd laravel-api-create-test
php artisan serve
Ensuite, créez un modèle avec un drapeau -m pour la migration en utilisant le code ci-
dessous :
Mettez maintenant à jour le fichier de migration pour y inclure le champ nécessaires. Ajoutez
les champs title et description pour le modèle de produit et ces deux champs de table dans le
fichier database/migrations/{date_stamp}_create_products_table.php.
$table->string('title');
$table->longText('description');
Ensuite, vous devez ajouter une classe StoreProductRequest pour stocker les nouveaux
produits dans la base de données. Ajoutez la classe suivante au début du même fichier.
return response()->json([
'status' => true,
'message' => "Product Created successfully!",
'product' => $product
], 200);
}
Maintenant, vous allez créer la requête, ce que vous pouvez faire en exécutant la commande
suivante :
use App\Http\Controllers\Api\ProductController;
Route::apiResource('products', ProductController::class);
Avant de commencer à tester l’API, assurez-vous que la table products se trouve dans votre
base de données. Si elle n’existe pas, créez-en une à l’aide d’un panneau de contrôle tel que
XAMPP. Vous pouvez également exécuter la commande suivante pour migrer la base de
données :
{
"title":"Apple",
"description":"Best Apples of the world"
}
Après avoir cliqué sur le bouton Envoyer, vous devriez voir ce qui suit :
— Postman après avoir cliqué sur Envoyer
Maintenant, récupérez les produits créés en utilisant la requête GET. L’URL est la même. Les
résultats ressembleront à ce qui suit :
— Les produits récupérés par la requête GET.
Comment authentifier une API à l’aide de Sanctum
L’authentification est cruciale pour sécuriser une API. Laravel facilite cette tâche en
fournissant la fonctionnalité du jeton Sanctum, que vous pouvez utiliser en tant que
middleware. Il sécurise l’API à l’aide de jetons générés lorsque l’utilisateur se connecte à
l’aide des informations d’identification correctes. N’oubliez pas que les utilisateurs ne peuvent
pas accéder à l’API sécurisée sans jeton.
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class UserController extends Controller
{
//
$token = $user->createToken('my-app-token')->plainTextToken;
$response = [
'user' => $user,
'token' => $token
];
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\UserController;
Route::post("login",[UserController::class,'index']);
Après avoir ajouté une route au middleware, vous obtiendrez une erreur de serveur interne si
vous essayez de récupérer les produits.
— Une erreur de serveur interne après l’ajout d’une route
Mais une fois que vous vous êtes connecté, que vous avez obtenu un jeton et que vous
l’avez utilisé dans l’en-tête, vous serez authentifié et vous pourrez commencer à travailler.
Vous pouvez envoyer une requête POST à http://127.0.0.1:8000/api/login avec le corps
suivant :
{
"email":"[email protected]",
"password":"password"
}
— Authentification réussie
Résumé
Le modèle éloquent de Laravel facilite la création, la validation et le test des API. Son
mapping objet-relationnel fournit une approche directe pour interagir avec la base de
données.
De plus, en tant que middleware, le jeton Sanctum de Laravel peut vous aider à sécuriser
rapidement vos API.