Créer une API Laravel à partir de zéro

blog / Techno / Web / Créer une API Laravel à partir de zéro

Créer une API Laravel à partir de zéro

10 Oct, 2021 |
Laravel API

Bonjour la Team , 

Ce tutoriel vous apprendra à utiliser Laravel 8 – la version la plus récente de l’un des frameworks PHP les plus courants – pour créer une application Web REST API CRUD avec une base de données MySQL , étape par étape, en commençant par la création du projet et se terminant par la mise en œuvre et le service de votre application. Cette première application prendra en charge la gestion des produits . 

Prérequis : 

Ce guide suppose que vous avez déjà installé Composer, Postman, PHP, MySQL et un terminal sur votre ordinateur, dans le cas inverse on vous guide pour le téléchargement de ces outils ci-dessous.

Création de projet (en utilisant Composer) : 

Afin de créer un projet Laravel, on utilisera la commande suivante : 

composer create-project laravel/laravel  laravel-crud-api

Après avoir tapé cette commande sur notre terminal, nous devons avoir des logs comme dans la capture ci-dessous :

Créer une API Laravel à partir de zéro 2 - Webpick

Création et configuration de la BD : 

Vous pouvez créer votre base de données selon l’outil que vous utilisez (phpmyadmin / HeidiSQL) .

Créer une API Laravel à partir de zéro 4 - Webpick

Ensuite, nous ouvrons notre projet dans un éditeur de code (VS Code, Sublime Text…), ouvrir le fichier .env se trouvant [“nom_de_projet/.env”] et modifier le bloc de la base de données : 

DB_CONNECTION=mysql

DB_HOST=127.0.0.1

DB_PORT=3306

DB_DATABASE=crudapi (Nom de la base de données)

DB_USERNAME=root (username)

DB_PASSWORD= (mot de passe)

Et voilà, nous avons bien configuré la partie base de données .

Model et Migration : 

On passe maintenant à la partie model  et migration. Pour créer un modèle accompagné d’une migration, on utilisera la commande : 

php artisan make:model Produit –migration

et comme ça, la migration est créée dans ce chemin : “database\migrations\” et le modèle ici : “app\Models\Produit.php” .

Model :

Pour le modèle, il nous suffira d’ajouter le fillable des champs .

Fillable : Dans l’ORM éloquent, l’attribut $fillable est un tableau contenant tous les champs de la table qui peuvent être remplis dans les affectations de masse.

L’affectation en masse fait référence à l’envoi d’un tableau au modèle pour créer directement un ou plusieurs enregistrements dans la base de données.

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;

use Illuminate\Database\Eloquent\Model;

class Produit extends Model

{

use HasFactory;

protected $fillable =['nom', 'description','prix'];

}

Migration :

Concernant les changements que nous ferons sur la migration, ce sera l’ajout des champs du modèle .

/**

* Run the migrations.

*

* @return void

*/

public function up()

{

Schema::create('produits', function (Blueprint $table) {

$table->id();

$table->string('nom');

$table->string('description');

$table->decimal('prix',8 ,2);

$table->timestamps();

});

}

Pour ajouter cette table au sein de la base de données, il nous suffira de taper la commande : 

php artisan migrate

et si on vérifie dans notre base de  données, nous devrions avoir : 

Créer une API Laravel à partir de zéro 6 - Webpick

Remplissage de la base de données :

Dans cette partie, nous remplirons la base de données avec de fausses données en utilisant Faker et le système de Seeds et pour ce , 

nous créerons une nouvelle Factory par la commande : 

php artisan make:factory  ProduitFactory –model=Produit

on retrouvera le fichier dans le chemin “database\factories\ProduitFactory.php” et on mettra le code suivant :

/**

* Define the model's default state.

*

* @return array

*/

public function definition()

{

return [

'nom' => $this->faker->name(),

'description' => $this->faker->paragraph($nbSentences = 2, $variableNbSentences = true),

'prix' => $this->faker->randomNumber(4),

];

}

Pour mieux comprendre la librairie Faker 

On passe maintenant à la partie  Seeder, pour créer un seeder ,il nous suffira de taper la commande : 

php artisan make:seed ProduitTableSeeder

Ensuite nous ajouterons le code suivant : 

/**

* Run the database seeds.

*

* @return void

*/

public function run()

{

Produit::factory()->count(50)->create();

}

et finalement sur le terminal, on tape cette commande : 

php artisan db:seed –class=ProduitTableSeeder

et voilà notre table est remplie avec 50 enregistrements . 

Créer une API Laravel à partir de zéro 8 - Webpick

Controller :

Avec les données que nous avons maintenant, nous aurons certainement besoin de créer un controlleur pour les manipuler, et pour ce, on a cette commande : 

php artisan make:controller ProduitController –model=Produit

Index

Pour la partie index (récupérer tous les produits), nous aurons ce code :

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index()

{

return Produit::all();

}

Store

Pour la partie store, c’est la méthode responsable de l’insertion d’un nouveau produit et pour assurer ce fonctionnement voici le code à ajouter :

/**

* Store a newly created resource in storage.

*

* @param \Illuminate\Http\Request $request

* @return \Illuminate\Http\Response

*/

public function store(Request $request)

{

$produit = Produit::create($request->all());

return $produit;

}

Show

La méthode Show fait en sorte d’afficher un seul produit en se basant sur l’id passé à la route, et voici son code: 

/**

* Display the specified resource.

*

* @param int $id

* @return \Illuminate\Http\Response

*/

public function show($id)

{

$produit = Produit::findOrFail($id);

return $produit;

}

Update

La méthode update est pour la mise à jour d’un produit et se base sur l’id passé, et voici son code: 

/**

* Update the specified resource in storage.

*

* @param \Illuminate\Http\Request $request

* @param int $id

* @return \Illuminate\Http\Response

*/

public function update(Request $request, $id)

{

$produit = Produit::findOrFail($id);

$produit->update($request->all());

return $produit;

}

Destroy

La méthode destroy prend en paramètre un id et fait la suppression du produit concerné, et voici son code :

/**

* Remove the specified resource from storage.

*

* @param int $id

* @return \Illuminate\Http\Response

*/

public function destroy( $id)

{

return Produit::destroy($id);

}

Routes :

Vu que dans cet exemple on travaille avec une API, donc le fichier que nous utiliserons sera “routes\api.php” et nous ajouterons ce code : 

//Avoir tous les produits

Route::get('/produits',[ProduitController::class,'index']);

//Avoir un produit precis

Route::get('/produits/{id}',[ProduitController::class,'show']);

//Creer un nouvel produit

Route::post('/produits',[ProduitController::class,'store']);

// Mettre a jour un produit

Route::put('/produits/{id}',[ProduitController::class,'update']);

//Supprimer un produit

Route::delete('/produits/{id}',[ProduitController::class,'destroy']);

Et voilà toutes les routes que nous pourrions utiliser . 

La partie de test avec Postman : 

Dans cette partie, nous mettrons en test, les routes et les méthodes invoquées dans le controlleur . 

en ouvrant postman, nous trouverons un tableau de bord pour créer une nouvelle requête, on la crée et on passe aux tests

Index avec la route ‘/produits’: 

– On mettra dans la méthode GET , et en url on met : http://127.0.0.1:8000/api/produits

le résultat devrait être l’ensemble des produits dans la BD : 

Créer une API Laravel à partir de zéro 10 - Webpick

Show avec la route “/produits/{id}”:

  • On mettra dans la méthode GET , et en url on met : http://127.0.0.1:8000/api/produits/20 ,(j’ai pris 20 comme exemple )
Créer une API Laravel à partir de zéro 12 - Webpick

Store avec la route “/produits” :

  • On mettra dans la méthode POST , et en url on met : http://127.0.0.1:8000/api/produits .
  • Dans la partie headers , on ajoute :
Créer une API Laravel à partir de zéro 14 - Webpick

et dans la partie Body , on met notre requête : 

{

    "nom": "Produit de test 2",

    "description": "Description du produit de test 2",

    "prix": "299",

}

et voici la réponse qu’on aura : 

Créer une API Laravel à partir de zéro 16 - Webpick

Update avec la route “/produits/{id}” :

  • On utilisera la méthode put avec les mêmes headers et  en url on met : http://127.0.0.1:8000/api/produits/10 (10 est un exemple).
  • On met dans le body les nouvelles informations du produits et on fait un envoi , nous devrions avoir une retour pareil a ca : 
Créer une API Laravel à partir de zéro 18 - Webpick

Destroy avec la route “/produit/{id}” :

  •  On utilisera la méthode “DELETE” et on mettra en url : http://127.0.0.1:8000/api/produits/10 et lors de l’envoi ca devrait retourner 1, ensuite vous vérifiez la totalité des produits pour voir que c’est supprimé

Conclusion : 

Et voila, notre tutoriel touche à sa fin, j’espère que ca tourne chez vous et à la prochaine .

Livre Blanc Divi

Accédez au Livre Blanc Divi rédigé par l’équipe Webpick et découvrez comment WordPress peut révolutionner votre vision de l’édition de contenus sur le web !

Disponible en version web en cliquant ici, ou en pdf envoyé à votre boîte email à travers le formulaire suivant :

Catégories

à propos

Webpick a été fondé en 2015 par Taoufik, AKA Tao. Vétéran du web à Marrakech, Tao a construit une belle équipe de spécialistes des technologies, principalement PHP et WordPress. Accaparé par les multiples projets de l’incubateur EBF (Emerging Business Factory) qu’il a confondé, Tao a laissé les rênes de Webpick à son ami et associé David à partir de 2018.

Partager cette page

À propos de l’auteur

Hamza Taougar

Hamza Taougar

Auteur

Bonjour cher lecteur ! Je suis Hamza Taougar, un ingénieur spécialiste PHP et WordPress. J'espère que cet article vous a plu. Bonne lecture !