rest_mediatekdocuments - API REST PHP pour la gestion de médiathèque Mediatek86

Dans le cadre d'un Atelier Professionnel BTS SIO, j'ai étendu une API REST PHP existante pour le compte du réseau de médiathèques Mediatek86 (Poitiers, Vienne). Le client est représenté par Mme JULIEN (Directrice Administrative et Financière), la maîtrise d'œuvre par la société InfoTech Services 86.

Le cahier des charges précisait les contraintes techniques : PHP pour l'API, MySQL comme SGBD, authentification HTTP Basic. Les missions API représentent 45 heures estimées au total, incluant la gestion CRUD des documents, des commandes avec suivi d'étapes, des abonnements aux revues, des exemplaires physiques, et l'authentification par profil.

L'API a été déployée sur AwardSpace (hébergeur gratuit retenu pour sa compatibilité avec tous les verbes HTTP). Des sauvegardes quotidiennes sont planifiées via cron-job.org. Une collection Postman de 25 requêtes couvre l'ensemble des endpoints. La documentation PHP a été générée avec phpDocumentor 3.

voir sur github
rest_mediatekdocuments - API REST PHP pour la gestion de médiathèque Mediatek86

Le compte rendu du projet est situé dans l'espace des fichiers à télécharger de la page dédiée à l'application C# qui consomme cette API.

Langages et technologies utilisés

API PHP

  • PHP 7.x+
  • vlucas/phpdotenv
  • PDO MySQL

Infrastructure et outils

  • MySQL 8.x
  • Apache / .htaccess
  • Composer
  • Git, GitHub
  • Postman
  • cron-job.org (sauvegardes automatisées)

Contexte du projet

Mediatek86 est un réseau de médiathèques de la Vienne (Poitiers). La direction souhaitait une API REST pour servir l'application de bureau de gestion documentaire. Aucune application n'existait auparavant. En tant que développeur au sein de la société InfoTech Services 86 (maîtrise d'œuvre), j'ai pris en charge l'extension de l'API existante : ajout des endpoints CRUD pour les documents, commandes, abonnements, exemplaires et authentification, puis déploiement en production et mise en place de sauvegardes automatisées.

Endpoints ajoutés

CRUD documents - 9 routes (POST/PUT/DELETE pour livre, dvd, revue) avec transactions PDO garantissant la cohérence des tables liées par héritage.

Commandes - GET, POST, PUT, DELETE sur /commandedocument et GET sur /suivi.

Abonnements - GET sur /abonnement/{idRevue}, GET sur /abonnementexpiration (abonnements expirant dans 30 jours), POST et DELETE sur /abonnement.

Exemplaires - GET enrichi avec libelleEtat (jointure etat), PUT pour modifier l'état, DELETE.

Authentification - GET sur /utilisateur/{login, pwd} avec jointure sur service pour retourner le libellé du service.

Sécurité - Rejet HTTP 400 sur accès direct à la racine sans route. En-têtes X-Auth-User / X-Auth-Pass lus en alternative à PHP_AUTH_USER pour compatibilité hébergeurs mutualisés.

Dépôt GitHub

https://github.com/rabarijoy/rest_mediatekdocuments

Points notables dans ce dépôt :

  • Script de création de la base de données (mediatek86.sql) à la racine
  • Documentation PHP générée par phpDocumentor dans le dossier docs/
  • Collection Postman (MediaTekDocuments_API_Tests.postman_collection.json) à la racine

API en ligne

L'API est déployée et accessible (mode opératoire complet dans le README du dépôt) : https://apirestmediatekdocuments.medianewsonline.com/rest_mediatekdocuments/

Authentification requise : Basic Auth - login admin, mot de passe adminpwd.

Documentation technique

Documentation PHP (phpDocumentor 3) Générée depuis les commentaires phpDoc du dossier src/. Disponible dans le dépôt : dossier docs/ Couvre les classes : MyAccessBDD, AccessBDD, Controle, Url, Connexion