Construire une API REST avec Lumen

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éponse JSON.
  • create La méthode crée un nouveau product et retourne le product nouvellement créé en tant que réponse JSON.
  • show La méthode retourne une seule ressource produit par son id. Cela est également renvoyé comme une réponse JSON.
  • update méthode met à jour une ressource de produit unique par son id ainsi.
  • delete méthode supprime une ressource de produit par son id et renvoie un message success.

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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.