====== 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.
L'exemple ici est donné sous un projet Symfony et sous Windows
===== Installation =====
==== Installer la partie UI ====
[[https://www.youtube.com/watch?t=1125&v=no0y4ISItiw|Vidéo pour Installer Swagger-UI]]
=== Petite modification ===
Par defaut l'UI pointe sur un fichier ''https://petstore.swagger.io/v2/swagger.json''.
Il faut faire cette petite modification du code de la page HTML pour le faire pointer vers le fichier ''public/swagger/swagger.json''
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
],
==== 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''
==== Le fichier source swagger.php ====
Dans ce dossier créer un fichier ''swagger.php'' qui contiendra les infos de bases de vos APIs sous forme d'Annotations
==== Compilation du fichier en json ====
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
==== Resultats swagger.json ====
Le fichier généré est celui là :
{
"openapi": "3.0.0",
"info": {
"title": "APIs TechTIC",
"version": "0.1"
},
"servers": [
{
"url": "http://api.techtic.pro",
"description": "APIs de TechTIC"
}
]
}
===== Test =====
On se rends sur l'URL ''http://127.0.0.1:8000/swagger/'' et on devrait obtenir cela :
{{:prog:api:swagger1.png|}}
===== Ressources =====
Voir la [[https://www.grafikart.fr/tutoriels/swagger-openapi-php-1160|vidéo de GrafikArt sur Swagger et OpenAPI]] pour plus di'nformations