Conversion Postman vers Curl en PHP : anatomie complète

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

La magie d'un clic : comment Postman se transforme en Curl ?

\n\n

Chaque développeur qui travaille avec des API connaît cette situation : vous avez configuré la requête parfaite dans Postman, tout fonctionne comme sur des roulettes, et vous devez maintenant transmettre cette requête à un collègue ou l'intégrer dans un script PHP. Vous cliquez sur "Code" → vous sélectionnez cURL → et vous obtenez une commande prête à l'emploi. De la magie ? Non, juste des maths et du parsing.

\n\n

Mais que faire si vous devez automatiser ce processus ? Ou écrire votre propre convertisseur qui transforme à la volée une description JSON de requête en une commande curl exécutable ? Aujourd'hui, nous allons explorer les coulisses de ce mécanisme et écrire une fonction PHP qui fait exactement la même chose que Postman — mais en partant de zéro.

\n\n

Ce contenu sera utile non seulement aux développeurs backend, mais aussi à tous ceux qui souhaitent comprendre plus en profondeur comment fonctionnent les requêtes HTTP et comment les convertir d'un format à un autre. C'est parti !

\n\n

Qu'est-ce que "Postman to Curl" concrètement ?

\n\n

Lorsque vous cliquez sur le bouton d'exportation dans Postman, le programme effectue une opération simple mais cruciale : il prend une description structurée de la requête (méthode, URL, en-têtes, corps) et la traduit en syntaxe de ligne de commande.

\n\n

En substance, il s'agit d'une transformation de requête d'une représentation à une autre. Postman stocke les requêtes dans son modèle JSON interne. Lorsque vous sélectionnez cURL, il parcourt ce modèle et assemble une chaîne de caractères comme celle-ci :

\n\n
curl --request POST \\\n  --url https://api.example.com/data \\\n  --header 'Content-Type: application/json' \\\n  --data '{"key":"value"}'
\n\n

Tout ce qui est génial est simple. Mais voyons comment cela fonctionne au niveau du code.

\n\n

Créer votre propre convertisseur en PHP

\n\n

Nous allons écrire une classe PostmanToCurl qui prend un tableau associatif avec les paramètres de la requête et retourne une chaîne contenant la commande curl prête à l'emploi. Ce sera notre mini-moteur de conversion.

\n\n

Étape 1. Définir la structure des données d'entrée

\n\n

Pour simplifier, convenons qu'en entrée nous recevons un tableau avec les clés : method, url, headers (tableau associatif), body (chaîne ou tableau). C'est le modèle minimal utilisé par Postman.

\n\n
<?php\n\n$request = [\n    'method'  => 'POST',\n    'url'     => 'https://api.example.com/users',\n    'headers' => [\n        'Content-Type' => 'application/json',\n        'Authorization' => 'Bearer token123'\n    ],\n    'body'    => json_encode(['name' => 'John', 'email' => 'john@example.com'])\n];
\n\n

Étape 2. Écrire la fonction d'assemblage

\n\n

La logique principale : prendre la méthode, l'URL, les en-têtes, le corps — et les assembler en une commande. Faites attention à l'échappement des guillemets et des caractères spéciaux.

\n\n
function generateCurlCommand(array $request): string {\n    $parts = ['curl'];\n\n    // 1. Méthode (si ce n'est pas GET)\n    if (strtoupper($request['method']) !== 'GET') {\n        $parts[] = '--request ' . strtoupper($request['method']);\n    }\n\n    // 2. URL\n    $parts[] = '--url ' . escapeshellarg($request['url']);\n\n    // 3. En-têtes\n    foreach ($request['headers'] as $key => $value) {\n        $parts[] = '--header ' . escapeshellarg($key . ': ' . $value);\n    }\n\n    // 4. Corps de la requête\n    if (!empty($request['body'])) {\n        $parts[] = '--data ' . escapeshellarg($request['body']);\n    }\n\n    return implode(" \\\\\\n  ", $parts);\n}
\n\n

La fonction escapeshellarg est votre meilleure amie. Elle échappe correctement les guillemets, évitant ainsi de casser la commande et les éventuelles injections.

\n\n

Analyse sous le capot : ce que fait réellement Postman

\n\n

Maintenant que nous avons un code fonctionnel, voyons exactement comment Postman (et notre convertisseur) traite chaque élément de la requête.

\n\n

1. Méthode HTTP

\n

Postman vérifie si la méthode est différente de GET. Si c'est le cas, il ajoute le flag --request. Pourquoi pas pour GET ? Parce que cURL effectue par défaut une requête GET si rien d'autre n'est spécifié. Intel

Blogs

Book Recommendations