TP - Création d’une API avec Slim PHP Dans ce tp vous allez apprendre à réaliser une API avec un framework relativement léger, nommé Slim PHP. Pour commencer, assurez-vous d’avoir MySQL ou tout autre système de gestion de base de données (SGBD) SQL d’installé sur votre système, et qu’il fonctionne correctement. Pour la suite, je vais considérer que vous avez un SGBD fonctionnel. Installation de Composer Il est également indispensable d’avoir Composer d’installé, composer est un système de paquets (similaire à NPM) pour PHP. Pour installer Composer : https://getcomposer.org/download/ Pour Windows il y a un installateur dédié, vous pouvez également réaliser l’installation en ligne de commande Une fois l’installateur lancé, ne cochez pas cette case Ensuite, si PHP est installé sur votre système Windows (et donc pas sur WSL) composer ne devrait pas rencontrer de difficultés à trouver votre installation de PHP. Si ce n’est pas le cas, c’est que vous n’avez probablement pas PHP installé sur votre système Windows, il va donc falloir passer par l’installation en ligne de commande que vous trouverez juste après. Après cette étape, Composer va faire ses vérifications, tout ce qu’il y a de plus classique. Si tout fonctionne correctement, vous devriez arriver sur ceci Composer vous propose de vérifier une dernière fois que vous êtes satisfait des options que avez défini. A l’aide j'ai une erreur ! Si vous avez rencontré cette erreur (ou quelque chose de similaire), c’est que votre installation de PHP est relativement récente, nous allons donc devoir configurer PHP pour assurer son bon fonctionnement. Tout d’abord nous allons nous occuper de notre fichier php.ini Rendez-vous dans votre dossier d’installation de php, et localisez ces fichiers, renommez-en un en php.ini, puis supprimez l’autre. Nous allons maintenant activer les extensions demandés par Composer en l'occurrence : php-curl, php-mbstring, php-openssl Nous allons donc devoir dé-commenter ces lignes : Une fois les opérations réalisées, appuyez sur le bouton Précédent, puis Suivant, pour que Composer puisse relancer l’analyse de votre configuration de PHP, et tout devrait entrer en ordre. Installation de Composer par les lignes de commandes Exécutez ces commandes là où vous avez installé votre PHP (WSL ou autre) php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === 'e21205b207c3ff031906575712edab6f13eb0b361f2085f1f1237b7126d785e826a4 50292b6cfd1d64d92e6563bbde02') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');" Une fois ces étapes réalisés, vous pouvez ajouter Composer globalement sur votre système : sudo mv composer.phar /usr/local/bin/composer Voici une documentation complémentaire pour l’installation globale de composer : https://getcomposer.org/doc/00-intro.md#globally Réalisation de l’API A ce stade, je vais considérer que vous avez un Composer fonctionnel Créez un nouveau dossier que vous nommez comme vous le souhaitez, puis via le terminal lancez ces commandes dans le dossier que vous venez de créer : composer init Puis laissez-vous guider, vous allez définir un nouveau projet Composer puis composer require slim/slim:"4.*" Nous indiquons à Composer de require le paquet Slim, nous allons avoir besoins de paquets complémentaire pour assurer le bon fonctionnement du paquet Slim : composer require slim/psr7 A ce stade nous avons un projet slim d'initialisé, nous allons pouvoir créer notre API. Dans le cadre de ce tp, il vous est demandé de réaliser une API, avec les entités de votre choix, vous devrez en revanche réaliser des relations : Par exemple : des produits reliés à des catégories, des auteurs à des articles, mais également à des commentaires. Tous les endpoints devront être géré, votre API devra être capable de : - Afficher l’ensemble des éléments - Afficher un élément spécifique - Créer - Modifier - Supprimer Un endpoint par entités par exemple : Produits GET localhost:8080/api/products POST localhost:8080/api/products GET localhost:8080/api/products/1 DELETE localhost:8080/api/products/1 PUT localhost:8080/api/products/1 Catégories GET localhost:8080/api/categories POST localhost:8080/api/categories GET localhost:8080/api/categories/1 DELETE localhost:8080/api/categories/1 PUT localhost:8080/api/categories/1 Votre API devra être un minimum sécurisée, elle devra donc se prémunir de l’envoi / de la réception de données non attendu, il faudra donc réaliser une validation pertinente, (si j’attend un prix, je ne veux recevoir que des chiffres). Pour consommer votre API, il vous est demandé une communication avec un frontend, je vous laisse libre de choisir la technologie (Next, Nuxt, Javascript, VueJS…). Le frontend devra donc avoir l'ensemble des éléments d’interface pour réaliser les opérations de lecture, création, modification, suppression, cités précédemment. Pour plus de complexités (non obligatoire) Vous pouvez ajouter une documentation d’API avec Swagger et Open API, votre documentation devra donc être accessible par une URL différentes que votre endpoints Par exemple : localhost:8080/api sera votre URL d’API et localhost:8080/doc sera votre URL de documentation swagger. Vous pouvez sécuriser votre API via un système de token (JWT), vous devrez donc être en capacités de récupérer un token, puis de vérifier son bon fonctionnement Pour ajouter de la complexité vous pouvez réaliser la même API, avec le framework d’API nommé Lumen, qui est une version light de Laravel destiné à réaliser des API. Documentations La Doc de Slim : https://www.slimframework.com/docs/v4/start/installation.html#step-4-he llo-world Lumen : https://lumen.laravel.com/docs/10.x Swagger : https://github.com/zircote/swagger-php https://medium.com/swlh/integrate-openapi-into-slim-php-project-15dd9e1dc398