J’ai récemment développé une API avec Laravel pour un mini-projet sur lequel un couple d’amis et moi avons travaillé. J’ai décidé de construire une autre API mais avec Lumen à la place, car c’est un framework beaucoup plus léger et rapide que Laravel.
Lumen est un micro-framework construit au-dessus des composants de base de Laravel. Lumen utilise beaucoup de concepts familiers de Laravel tels que Eloquent, la mise en cache, le routage, le middleware et son conteneur de services. Un avantage majeur de Lumen est sa vitesse, en conséquence le framework est conçu pour construire des micro-services ou des API rapides.
Bien que ce tutoriel porte sur Lumen, une compréhension simple du fonctionnement de Laravel est tout ce dont vous avez besoin pour suivre.
Il existe plusieurs façons de configurer Lumen localement. Pour les besoins de ce tutoriel, nous le ferons via composer
. Vous pouvez consulter d’autres façons de configurer Lumen ici.
Depuis votre terminal, exécutez : composer create-project — prefer-dist laravel/lumen lumen_api
Cela va installer Lumen et toutes ses dépendances pour vous dans le répertoire lumen_api
. Ensuite, nous allons renommer le fichier.env.example
situé dans le répertoire root
en .env
Le pilote cache
par défaut de Lumen à la version 5.4 est memcached,
mais nous n’en aurons pas besoin pour ce tutoriel. Cependant n’importe lequel des suivants, array
database
et redis
sont supportés. Editez le fichier .env
et remplacez les valeurs par défaut CACHE_DRIVER
et QUEUE_DRIVER
par les suivantes:
CACHE_DRIVER=array
QUEUE_DRIVER=database
Pour servir notre projet localement, nous pouvons utiliser le serveur intégré de PHP en exécutant la commande suivante:php -S localhost:8000 -t public
Visitez localhost:8000
dans votre navigateur et vous devriez voir la page suivante.
Ce que nous allons construire
Nous allons construire une API REST simple qui gère les tâches de création, lecture, mise à jour et suppression pour un product resource
. Jetons un coup d’œil à notre endpoints
- GET /produits – Récupérer toutes les ressources produit
- POST /produits- Créer une nouvelle ressource produit
- GET /produit/{id} – Récupérer une ressource produit par id
- PUT /produit/{id} – Mettre à jour une ressource produit par id
- DELETE /produit/{id}-. Supprimer une ressource produit par id
Base de données et migrations
Créons notre fichier de migration. Exécutez la commande suivante:php artisan make:migration create_products_table
Cela va créer pour vous un nouveau fichier de migration dans le répertoire database/migrations
. Notre product resource
aura les attributs suivants, name
, price
et description
.
Ajouter le code suivant au fichier de migration nouvellement créé.
Editer .env
avec vos configurations database
et ensuite exécuter la commande suivante pour exécuter la migration. php artisan migrate
Création de notre modèle de produit
Vous êtes peut-être déjà habitué à créer des models
et des controllers
via des commandes artisan
dans Laravel, mais malheureusement Lumen ne prend pas en charge ces commandes. Pour voir une liste des commandes artisan
disponibles dans Lumen, exécutez:php artisan
Naviguez dans le répertoire app
et créez un nouveau model
appelé Product.php
À la différence de Laravel, Lumen ne charge pas initialement Eloquent et Facades. Pour pouvoir les utiliser, nous devons décommenter les lignes de code suivantes situées dans app\bootstrap.php
$app->withFacades();
$app->withEloquent();
Méthodes du contrôleur
Créons notre controller
. Naviguez dans le répertoire app\Http\Controller
et créez un fichier ProductController.php
. Ajoutez le code suivant au controller
que vous venez de créer.
-
index
La méthode retourne tous les produits disponibles en tant que réponseJSON
. -
create
La méthode crée un nouveauproduct
et retourne leproduct
nouvellement créé en tant que réponseJSON
. -
show
La méthode retourne une seule ressource produit par sonid
. Cela est également renvoyé comme une réponseJSON
. -
update
méthode met à jour une ressource de produit unique par sonid
ainsi. -
delete
méthode supprime une ressource de produit par sonid
et renvoie un messagesuccess
.
Routes
Il est temps de finalement ajouter notre routes
. Ouvrez le fichier web.php
dans le dossier routes
et ajoutez le code suivant:
Nous définissons le groupe de notre routes
et ajoutons le prefix
api/v1
puisque c’est un paramètre commun partagé par tous nos URIs
Tip : Utilisez le préfixe pour spécifier des paramètres communs pour vos routes groupées
Seeding our Database
Avant de commencer à tester notre endpoints
, créons quelques données d’échantillon pour travailler avec. Commençons par créer notre seed
. Exécutez:php artisan make:seed ProductsTableSeeder
Cela créera un fichier ProductsTableSeeder.php
dans le répertoire database/seeds
. Editez le fichier avec le code suivant:
Puis, éditez le fichier DatabaseSeeder.php
dans le répertoire database\seeds
avec le code suivant:
Nous allons faire usage de Model Factory de Laravel et de la bibliothèque Faker pour générer les données de l’échantillon. Naviguez vers le répertoire database\factories
et ajoutez le code suivant au fichier ModelFactory.php
.
Puis, exécutez:php artisan db:seed
Cela créera un tas de données factices pour nous dans notre database
.
Tester notre API
Nous allons utiliser Postman pour tester notre API. Vous pouvez en savoir plus sur la façon de démarrer avec Postman ici.