Ceci est une ancienne révision du document !
Swagger
Il existe un outils Swagger qui permet de generer la doc des API que l'on créé.
Cela peut fonctionner dans PHP avec la librairie swagger-php
qui va permettre a travers des annotations PHP de générer la documentation.
Installation
Installer la partie UI
Installer la commande swagger-php
Qui permettra de generer la description de l'API au format OpenAPI via la commande commande?
Pour installer : composer require zircote/swagger-php
D:\webprojects\test-api-project>composer require zircote/swagger-php Using version ^3.0 for zircote/swagger-php ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Restricting packages listed in "symfony/symfony" to "4.3.*" Package operations: 1 install, 0 updates, 0 removals - Installing zircote/swagger-php (3.0.2): Downloading (100%) Writing lock file Generating autoload files ocramius/package-versions: Generating version class... ocramius/package-versions: ...done generating version class Executing script cache:clear [OK] Executing script assets:install public [OK]
Configurer le projet
dans votre projet creer un dossier swagger
Dans ce dossier créer un fichier swagger.php
qui contiendra les infos de bases de vos APIs sous forme d'Annotations
- swagger.php
<?php use OpenApi\Annotations as OA; /** * @OA\Info(title="APIs l'informaTIC",version="0.1") * @OA\Server( * url="http://api.linformatic.fr", * description="APIs de l'informaTIC" * ) */
Executer la commande vendor\bin\openapi.bat –format json –output public\swagger\swagger.json swagger\swagger.php src
pour generer un fichier JSON (swagger.json) de description des vos API dans le dossier public
D:\webprojects\test-api-project>vendor\bin\openapi.bat --format json --output public\swagger\swagger.json swagger\swagger.php src Required @OA\PathItem() not found
Le fichier généré est celui là :
- swagger.json
{ "openapi": "3.0.0", "info": { "title": "APIs TechTIC", "version": "0.1" }, "servers": [ { "url": "http://api.techtic.pro", "description": "APIs de TechTIC" } ] }
On modifie le code de la page HTML public/swagger/index.html
On remplace url: “https://petstore.swagger.io/v2/swagger.json”,
par url: “swagger.json”,
window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ url: "swagger.json", <<<<< ICI ON MODIFIE L'URL dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ],
Test
On se rends sur l'URL http://127.0.0.1:8000/swagger/
et on devrait obtenir cela :
Ressources
Voir la vidéo de GrafikArt sur Swagger et OpenAPI pour plus di'nformations