API REST Complete avec CRUD, Auth JWT, Validation, Pagination et Rate Limiting
Table des Matières
- Présentation
- Installation
- Configuration
- Usage
- API Endpoints
- Schema de Base de Données
- Authentification JWT
- Rate Limiting
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
- 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
- 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
- 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'utilisateurmot_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.