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
S
Description
No description provided
Readme
60 KiB
0 Stars 1 Watchers 0 Forks
Languages
PHP 82.2%
Shell 13.7%
Dockerfile 4.1%