Uploaded by silotiamathis85

TP - Creation dune API avec Slim

advertisement
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
Download