Comment écrire une API REST en PHP en 30 minutes : guide étape par étape

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Comment écrire une API REST en PHP en 30 minutes



REST API (Representational State Transfer) est un style architectural pour l'interaction des composants d'une application distribuée sur un réseau. Dans le développement web moderne, REST API est la norme pour créer le backend d'applications mobiles, de SPA (Single Page Application) et de microservices. Dans cet article, nous allons montrer comment écrire une API REST simple mais entièrement fonctionnelle en PHP en seulement 30 minutes.



Nous allons créer une API pour gérer une liste de tâches (Todo List) avec le support des opérations CRUD (Create, Read, Update, Delete). Vous apprendrez à organiser le routage, à traiter les requêtes JSON et à connecter une base de données MySQL.



Préparation de l'environnement



Pour travailler, vous aurez besoin de :

  • Serveur web Apache ou Nginx avec le support de PHP 7.4+
  • MySQL ou MariaDB
  • Éditeur de code (VS Code, PhpStorm)
  • Postman ou curl pour tester l'API


Créez la structure du projet :

todo-api/├── index.php          # Point d'entrée (routeur)├── config.php         # Paramètres de connexion à la base de données├── api/│   └── tasks.php      # Logique de gestion des tâches└── .htaccess          # Paramètres de réécriture d'URL


Étape 1 : Configuration de .htaccess et du point d'entrée



Créez le fichier .htaccess pour rediriger toutes les requêtes vers index.php :

RewriteEngine OnRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?url=$1 [QSA,L]


Créons maintenant index.php — notre routeur principal :

<?phpheader("Content-Type: application/json; charset=UTF-8");header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");header("Access-Control-Allow-Headers: Content-Type, Authorization");

// Traitement des requêtes preflightif ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { http_response_code(200); exit();}

require_once 'config.php';require_once 'api/tasks.php';

$url = isset($_GET['url']) ? rtrim($_GET['url'], '/') : '';$urlParts = explode('/', $url);$resource = $urlParts[0] ?? '';$id = $urlParts[1] ?? null;

switch ($resource) { case 'tasks': $tasks = new Tasks(); echo $tasks->handleRequest($_SERVER['REQUEST_METHOD'], $id); break; default: http_response_code(404); echo json_encode(["message" => "Resource not found"]); break;}?>


Étape 2 : Connexion à la base de données



Créez config.php avec les paramètres de connexion :

<?phpclass Database {    private $host = "localhost";    private $db_name = "todo_api";    private $username = "root";    private $password = "";    public $conn;

public function getConnection() { $this->conn = null; try { $this->conn = new PDO( "mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password ); $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { http_response_code(500); echo json_encode(["message" => "Database connection error"]); exit(); } return $this->conn; }}?>


Créez la table dans MySQL :

CREATE DATABASE todo_api;USE todo_api;

CREATE TABLE tasks ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, description TEXT, status ENUM('pending', 'completed') DEFAULT 'pending', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);


Étape 3 : Implémentation des opérations CRUD



Créez le fichier api/tasks.php avec la logique principale :

Blogs

Book Recommendations