Postman in Curl umwandeln: Anatomie der Konvertierung in PHP

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Magie eines Klicks: Wie wird Postman zu Curl?

\n\n

Jeder, der mit APIs arbeitet, kennt die Situation: Sie haben eine perfekte Anfrage in Postman konfiguriert, alles funktioniert reibungslos, und dann müssen Sie diese Anfrage an einen Kollegen weitergeben oder in ein PHP-Skript einbauen. Sie klicken auf "Code" → wählen cURL → und erhalten einen fertigen Befehl. Magie? Nein, reine Mathematik und Parsing.

\n\n

Aber was, wenn Sie diesen Prozess automatisieren müssen? Oder Ihren eigenen Konverter schreiben wollen, der eine JSON-Beschreibung einer Anfrage in einen ausführbaren curl-Befehl umwandelt? Heute schauen wir unter die Haube dieses Mechanismus und schreiben eine PHP-Funktion, die dasselbe tut wie Postman – nur von Hand.

\n\n

Dieser Artikel ist nicht nur für Backend-Entwickler nützlich, sondern für alle, die tiefer verstehen wollen, wie HTTP-Anfragen funktionieren und wie man sie von einem Format in ein anderes umwandelt. Los geht's!

\n\n

Was bedeutet "Postman to Curl" eigentlich?

\n\n

Wenn Sie in Postman auf die Export-Schaltfläche klicken, macht das Programm eine einfache, aber wichtige Sache: Es nimmt die strukturierte Beschreibung der Anfrage (Methode, URL, Header, Body) und übersetzt sie in die Syntax der Befehlszeile.

\n\n

Im Grunde ist das eine Konvertierung einer Anfrage von einer Darstellung in eine andere. Postman speichert Anfragen in seinem internen JSON-Modell. Wenn Sie cURL auswählen, iteriert es über dieses Modell und erstellt eine Zeichenkette wie:

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

Genial einfach. Aber lassen Sie uns analysieren, wie das auf Code-Ebene funktioniert.

\n\n

Einen eigenen Konverter in PHP erstellen

\n\n

Wir schreiben eine Klasse PostmanToCurl, die ein assoziatives Array mit Anfrageparametern akzeptiert und eine Zeichenkette mit dem fertigen curl-Befehl zurückgibt. Das wird unsere kleine Konvertierungs-Engine.

\n\n

Schritt 1: Struktur der Eingabedaten definieren

\n\n

Der Einfachheit halber legen wir fest, dass wir als Eingabe ein Array mit den Schlüsseln method, url, headers (assoziatives Array) und body (String oder Array) erhalten. Dies ist das minimale Modell, das Postman verwendet.

\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

Schritt 2: Die Zusammenbaufunktion schreiben

\n\n

Die Hauptlogik: Methode, URL, Header und Body nehmen und zu einem Befehl zusammensetzen. Achten Sie auf das Escaping von Anführungszeichen und Sonderzeichen.

\n\n
function generateCurlCommand(array $request): string {\n    $parts = ['curl'];\n\n    // 1. Methode (falls nicht 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. Header\n    foreach ($request['headers'] as $key => $value) {\n        $parts[] = '--header ' . escapeshellarg($key . ': ' . $value);\n    }\n\n    // 4. Anfrage-Body\n    if (!empty($request['body'])) {\n        $parts[] = '--data ' . escapeshellarg($request['body']);\n    }\n\n    return implode(" \\\\\\n  ", $parts);\n}
\n\n

Die Funktion escapeshellarg ist Ihr bester Freund. Sie escapet Anführungszeichen korrekt und verhindert so, dass der Befehl beschädigt wird oder mögliche Injection-Angriffe erfolgen.

\n\n

Blick unter die Haube: Was Postman wirklich tut

\n\n

Nachdem wir nun einen funktionierenden Code haben, lassen Sie uns analysieren, wie Postman (und unser Konverter) jedes Element der Anfrage verarbeitet.

\n\n

1. HTTP-Methode

\n

Postman prüft, ob sich die Methode von GET unterscheidet. Wenn ja, wird das Flag --request hinzugefügt. Warum nicht für GET? Weil cURL standardmäßig eine GET-Anfrage durchführt, wenn nichts anderes angegeben ist. Kl

Blogs

Buchempfehlungen