Files
html/generated/api-20260411-232420
2026-04-17 00:57:15 +02:00
..

API REST Complete avec CRUD, Auth JWT, Validation, Pagination et Rate Limiting

Table des Matières

Présentation

Cette API REST offre une gestion complète des données avec les fonctionnalités suivantes :

  • Gestion des utilisateurs avec authentification JWT
  • Gestion des données avec CRUD (Création, Lecture, Mise à jour, Suppression)
  • validation des données entrantes
  • pagination pour les API de récupération de données
  • Rate limiting pour les API

Installation

  1. Ouvrez votre terminal et récupérez le code source de l'API en utilisant GIT :

git clone https://github.com/WEVCODE/api-rest.git

2.  Installez les dépendances nécessaires avec Composer :
    ```bash
composer install
  1. Installez la base de données PostgreSQL :

CREATE TABLE utilisateurs ( id SERIAL PRIMARY KEY, nom VARCHAR(255) NOT NULL, prenom VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL UNIQUE, mot_de_passe VARCHAR(255) NOT NULL );


## Configuration

1.  Configrez vos informations de base de données dans le fichier `.env` :
    ```bash
DB_HOST=localhost
DB_PORT=5432
DB_NAME=api_rest
DB_USER=your_username
DB_PASSWORD=your_password

Usage

  1. Exécutez la commande de migration pour créer les tables de base de données :

php artisan migrate

2.  Lancez l'API :
    ```bash
php -S localhost:8000 -t public

API Endpoints

Utilisateurs

  • Création d'un utilisateur:

POST http://localhost:8000/api/utilisateurs

    *   Corps de la requête :
        ```json
{
    "nom": "",
    "prenom": "",
    "email": "",
    "mot_de_passe": ""
}
  • Récupération d'un utilisateur:

GET http://localhost:8000/api/utilisateurs/:id

*   **Mise à jour d'un utilisateur**:
    ```bash
PUT http://localhost:8000/api/utilisateurs/:id
*   Corps de la requête :
    ```json

{ "nom": "", "prenom": "", "email": "", "mot_de_passe": "" }

*   **Suppression d'un utilisateur**:
    ```bash
DELETE http://localhost:8000/api/utilisateurs/:id

Données

  • Création d'une donnée:

POST http://localhost:8000/api/donnees

    *   Corps de la requête :
        ```json
{
    "title": "",
    "description": ""
}
  • Récupération des données:

GET http://localhost:8000/api/donnees

    *   Paramètres de pagination :
        ```
?limit=10&page=1
  • Mise à jour d'une donnée:

PUT http://localhost:8000/api/donnees/:id

    *   Corps de la requête :
        ```json
{
    "title": "",
    "description": ""
}
  • Suppression d'une donnée:

DELETE http://localhost:8000/api/donnees/:id


## Schema de Base de Données

La base de données PostgreSQL est utilisée pour stocker les données de l'application. Le schema de base de données est le suivant :

```sql
CREATE TABLE utilisateurs (
    id SERIAL PRIMARY KEY,
    nom VARCHAR(255) NOT NULL,
    prenom VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    mot_de_passe VARCHAR(255) NOT NULL
);

CREATE TABLE donnees (
    id SERIAL PRIMARY KEY,
    title VARCHAR(255) NOT NULL,
    description TEXT NOT NULL
);

Authentification JWT

L'authentification JWT est utilisée pour authentifier les utilisateurs et sécuriser les API. Les jetons JWT sont générés grâce à la bibliothèque de sécurité de Laravel.

Génération d'un jeton JWT

Pour générer un jeton JWT, vous devez envoyer une requête POST au endpoint /api/auth/login avec les paramètres suivants :

  • email : l'email de l'utilisateur
  • mot_de_passe : le mot de passe de l'utilisateur
POST http://localhost:8000/api/auth/login

Corps de la requête :

{
    "email": "",
    "mot_de_passe": ""
}

Rate Limiting

Le rate limiting est utilisé pour limiter le nombre de requêtes que les utilisateurs peuvent envoyer à certaines API. Les limites de fréquence sont définies dans le fichier rate-limiting.php .

Pour limiter le nombre de requêtes pour une API, vous pouvez définir les limites suivantes :

<?php

return [
    'limit' => 100,
    'window' => 60, // seconds
];

Cette configuration limite les requêtes à 100 par minute.

Note : Je pourrais augmenter le contenu de ce doc avec d'autres informations si vous le souhaitez.