Générer la liste des routes à importer dans postman

Générer la liste des routes à importer dans postman

🌱 Définir et identifier les Routes

Dans routes/api.php ==>> Expl

use App\Http\Controllers\UserController;

    Route::get('/users', [UserController::class, 'index']);
    Route::post('/users', [UserController::class, 'store']);
    Route::get('/users/{id}', [UserController::class, 'show']);
    Route::put('/users/{id}', [UserController::class, 'update']);
    Route::delete('/users/{id}', [UserController::class, 'destroy']);

Contrôleurs ==>>OK

🌱 Générer la liste des routes en JSON

Exécutez la commande pour générer le JSON contenant toutes vos routes :

    php artisan route:list --json > routes.json

Ce fichier routes.json contiendra la liste complète des routes avec leurs méthodes HTTP, URI et autres

🌱 Créer le script d’export

Créez un nouveau fichier, par exemple export-postman.php, à la racine (ou dans un dossier dédié, par exemple scripts/) — à suprm avant production :

<?php
// export-postman.php




// Définir l'URL de base sans slash final
$baseUrl = rtrim("http://localhost:8000", '/');




// Chemin du fichier de routes généré par Laravel
$routesFile = __DIR__ . '/routes.json';
if (!file_exists($routesFile)) {
    die("Le fichier routes.json n'existe pas. Veuillez d'abord générer la liste des routes avec 'php artisan route:list --json > routes.json'.\n");
}




// Lire et décoder le fichier JSON contenant les routes
$routesData = json_decode(file_get_contents($routesFile), true);
if (!$routesData) {
    die("Erreur lors de la lecture ou du décodage de routes.json.\n");
}




// Initialiser la structure de la collection Postman
$postmanCollection = [
    "info" => [
        "_postman_id" => uniqid(),
        "name"       => "APP_NS_V1",
        "schema"     => "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    ],
    "item" => []
];




// Regrouper les routes par le premier segment d'URI (exemple : "users", "roles", etc.)
$groupedRoutes = [];
foreach ($routesData as $route) {
    // Récupérer l'URI et retirer le slash initial s'il existe
    $uri = ltrim($route['uri'] ?? '', '/');
    
    // On ne traite que les routes commençant par "api"
    if (strpos($uri, 'api') !== 0) {
        continue;
    }
    
    // Pour le regroupement, supprimer le préfixe "api/" s'il est présent
    $uriForGrouping = $uri;
    if (strpos($uri, 'api/') === 0) {
        $uriForGrouping = substr($uri, strlen('api/'));
    }
    $segments = explode('/', trim($uriForGrouping, '/'));
    $group = $segments[0] ?? 'Autres';




    // Construire l'URL complète sans double slash
    $requestUrl = $baseUrl . '/' . $uri;




    // Créer la structure de la requête Postman
    $request = [
        "method" => strtoupper($route['method'] ?? 'GET'),
        "header" => [],
        "url"    => [
            "raw"      => $requestUrl,
            "protocol" => "http",
            "host"     => ["localhost"],
            "port"     => "8000",
            "path"     => explode('/', $uri)
        ]
    ];
    
    $item = [
        "name"    => $uri,
        "request" => $request,
        "response"=> []
    ];
    
    // Ajouter la requête dans le groupe correspondant
    $groupedRoutes[$group][] = $item;
}




// Construire les items de la collection en regroupant par section
foreach ($groupedRoutes as $groupName => $items) {
    $postmanCollection["item"][] = [
        "name" => ucfirst($groupName),
        "item" => $items
    ];
}




// Exporter la collection au format JSON dans un fichier
$outputFile = __DIR__ . '/postman_collection.json';
file_put_contents($outputFile, json_encode($postmanCollection, JSON_PRETTY_PRINT));




echo "La collection Postman a été générée avec succès dans le fichier : $outputFile\n";

 

🌱 Exécuter le script

php export-postman.php

🌱  Importer dans Postman

mon Postman +++ Import +++ sélection fichier postman_collection.json +++ Importer === Affichage par dossier ===

🌱 Visualiser et Mettre à jour les Collections

🌱 ==>> React Front ===>> Axios configuration ==>> CRUD des données via Formulaires

 

par