Comment créer une API REST en PHP en 30 minutes : guide pas à pas

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

Introduction : pourquoi une API REST en PHP ?

L'API REST (Representational State Transfer) est un style architectural qui permet à différentes applications de communiquer entre elles via HTTP. Aujourd'hui, aucun service web moderne ne se passe d'API : applications mobiles, fronts SPA, intégrations avec les systèmes de paiement — tout cela nécessite une interface rapide et claire pour échanger des données.

PHP reste l'un des langages les plus populaires pour le backend. Vous pouvez écrire une API REST complète en PHP pur sans frameworks lourds — cela ne vous prendra pas plus de 30 minutes. Dans cet article, nous allons détailler un exemple pratique avec des opérations CRUD (création, lecture, mise à jour, suppression) pour gérer une liste de tâches (To-Do).



1. Préparation de l'environnement et structure du projet

Pour travailler, vous aurez besoin de :

  • Un serveur local (Open Server, XAMPP, MAMP ou serveur PHP intégré)
  • PHP version 7.4 ou supérieure
  • Un éditeur de code (VS Code, PhpStorm)

Créez le dossier racine rest-api-php et à l'intérieur, les fichiers :

rest-api-php/├── index.php       (point d'entrée, routeur)├── config.php      (paramètres de la base de données)├── api/│   ├── tasks.php   (CRUD pour les tâches)│   └── helpers.php (fonctions auxiliaires)└── .htaccess       (redirection des requêtes vers index.php)


1.1. Configuration de .htaccess pour de belles URL

Pour que toutes les requêtes soient dirigées vers un point d'entrée unique, créez le fichier .htaccess à la racine :

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

Si vous utilisez le serveur PHP intégré, lancez-le simplement depuis le dossier du projet : php -S localhost:8000.



2. Création du routeur et de l'API de base

Ouvrez index.php — c'est notre gestionnaire principal. Il analysera la méthode HTTP et l'URI pour appeler les fonctions appropriées.



2.1. index.php — point d'entrée

<?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");

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

$method = $_SERVER['REQUEST_METHOD'];$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);$uri = rtrim($uri, '/');

// Routage simpleif ($uri === '/api/tasks') { require_once 'api/tasks.php'; handleTasks($method);} elseif (preg_match('/^\\/api\\/tasks\\/(\\d+)$/', $uri, $matches)) { require_once 'api/tasks.php'; handleTask($method, (int)$matches[1]);} else { sendResponse(['error' => 'Endpoint not found'], 404);}?>

Nous traitons deux routes : /api/tasks (liste/création) et /api/tasks/{id} (tâche spécifique).



2.2. helpers.php — fonctions auxiliaires

<?phpfunction sendResponse($data, $status = 200) {    http_response_code($status);    echo json_encode($data, JSON_UNESCAPED_UNICODE);    exit;}

function getJsonInput() { $input = file_get_contents('php://input'); return json_decode($input, true) ?? [];}?>


3. Travail avec la base de données et opérations CRUD

Créons une table simple tasks dans MySQL :

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

Fichier config.php :

<?php$host = 'localhost';$dbname = 'rest_api_db';$username = 'root';$password = '';

try { $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO:

Blogs

Book Recommendations