2.2 KiB
2.2 KiB
api-tube
API REST en PHP natif (POO) pour gérer des liens de vidéos YouTube.
- PHP natif uniquement : aucun framework, aucune dépendance, aucun Composer
- Stockage SQLite via PDO
- À chaque création / modification / suppression, un snapshot complet de la table est écrit dans
data.json
Prérequis
- PHP >= 8.1 avec l'extension
pdo_sqlite
Activer l'extension si absente (Debian/Ubuntu) :
sudo apt install php8.5-sqlite3
php -m | grep -i sqlite # doit afficher pdo_sqlite et/ou sqlite3
Lancement
php -S localhost:8000 -t public
La base database/api_tube.sqlite et son schéma sont créés automatiquement au premier appel.
Endpoints
| Méthode | Route | Description | Codes retour |
|---|---|---|---|
| GET | /links |
Lister tous les liens | 200 |
| GET | /links/{id} |
Lire un lien | 200 / 404 |
| POST | /links |
Créer un lien | 201 / 409 / 422 |
| PUT | /links/{id} |
Modifier un lien | 200 / 404 / 409 / 422 |
| DELETE | /links/{id} |
Supprimer un lien | 204 / 404 |
Corps attendu (POST / PUT, JSON)
{
"title": "Titre de la vidéo",
"description": "Description",
"link_url": "https://youtube.com/watch?v=VIDEO_ID",
"thumbnail": "https://img.youtube.com/vi/VIDEO_ID/hqdefault.jpg"
}
title et link_url sont obligatoires ; description et thumbnail sont optionnels. link_url doit être une URL valide et unique.
Fichier data.json
Régénéré à chaque POST / PUT / DELETE : contient la liste complète des liens, formatée (pretty print).
Tests manuels
bash tests/curl.sh
Arborescence
public/
index.php # point d'entrée unique
.htaccess # réécriture vers index.php
src/
Database.php # connexion PDO SQLite (+ création du schéma)
LinkRepository.php # CRUD SQL
JsonExporter.php # écriture de data.json
LinkController.php # routage, validation, orchestration
database/
schema.sql # schéma de la table links