Pack Camo

Konwerter cURL na kod

Zamień polecenie curl na fetch, axios, Python requests, Go, PHP i inne.

Wszystko działa lokalnie — nic nie jest wysyłane.

Polecenie curl

POST api.example.com

fetch

23 wiersze

// Browsers do not let scripts set Cookie; fetch ignores them.
const response = await fetch("https://api.example.com/v1/orders?expand=items", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc",
    Cookie: "session=abc123; theme=dark",
  },
  body: JSON.stringify({
    "customer": "cus_42",
    "items": [
      {
        "sku": "TSHIRT-M",
        "qty": 2
      }
    ],
    "gift": false,
    "note": null
  }),
  signal: AbortSignal.timeout(30000),
});

console.log(response.status, await response.text());

Wklej polecenie curl, otrzymaj działający kod

Ten konwerter zamienia polecenie curl na to samo żądanie HTTP w JavaScript fetch, axios, Node.js, Python requests, Go net/http, rozszerzeniu curl dla PHP lub Rust reqwest. Odczytuje curl tak, jak robi to Twoja powłoka i sam curl: cudzysłowy pojedyncze i podwójne, ciągi $'…', kontynuacje wierszy, łączone flagi jak -sSL, powtarzane dane -d i pola multipart -F. Nagłówki, cookies, uwierzytelnianie basic i bearer, treści JSON, limity czasu i ustawienia TLS są przenoszone, a wszystko, czego nie da się przetłumaczyć, zostaje wskazane. Polecenie jest analizowane w Twojej przeglądarce i nigdzie nie jest wysyłane, więc tokeny i cookies w nim pozostają prywatne.

Jak zamienić polecenie curl na kod

  1. 1Skopiuj żądanie jako curl. W Chrome, Edge lub Firefox otwórz narzędzia deweloperskie, przejdź do karty Network, kliknij żądanie prawym przyciskiem i wybierz Copy › Copy as cURL. Działa zarówno wariant bash, jak i wariant cmd dla Windows.
  2. 2Wklej polecenie do lewego panelu. Polecenia wielowierszowe z kontynuacjami \ lub ^ nie stanowią problemu.
  3. 3Wybierz język docelowy: fetch, axios, Node.js, Python, Go, PHP lub Rust, albo JSON, aby zobaczyć przeanalizowane żądanie.
  4. 4Przeczytaj uwagi pod kodem dotyczące flag, które zostały pominięte lub wymagają uwagi, a następnie skopiuj kod lub pobierz go jako plik.

Co jest konwertowane

Metoda i URL
-X/--request, --url, -G/--get (dane trafiają do query stringa), -I/--head, -T/--upload-file (PUT). Bez -X metoda jest wybierana tak jak w curl: POST, gdy jest treść, w przeciwnym razie GET.
Nagłówki
-H/--header, -A/--user-agent, -e/--referer, -b/--cookie i -r/--range. Powtarzające się nagłówki są łączone.
Treści żądań
-d/--data, --data-raw, --data-binary i --data-urlencode (łączone znakiem &, tak jak robi to curl), --json oraz pola multipart -F/--form, w tym przesyłanie plików z ;type= i ;filename=.
Uwierzytelnianie
-u/--user dla basic auth, --digest, --oauth2-bearer oraz dane logowania zapisane w URL.
Opcje połączenia
-k/--insecure, -L/--location, --compressed, -m/--max-time i -x/--proxy, jeśli język docelowy ma odpowiednik.

Treści JSON stają się prawdziwymi obiektami

Gdy treść jest w formacie JSON, czy to dlatego, że tak mówi Content-Type, czy dlatego, że wyraźnie nim jest, zostaje sformatowana i, jeśli język na to pozwala, zapisana jako wartość natywna: obiekt przekazany do JSON.stringify dla fetch, zwykły obiekt dla axios i słownik przekazany jako json= dla Python requests, przy czym true, false i null zamieniają się w True, False i None. Taki kod znacznie łatwiej edytować niż ciąg ze znakami ucieczki. Wyłącz Formatuj treści JSON, aby zachować treść bajt w bajt.

fetch w przeglądarce a Node.js

Oba cele fetch się różnią, ponieważ przeglądarki ograniczają to, co strona może wysłać. Skrypt w przeglądarce nie może ustawić Cookie, Referer, Host, Accept-Encoding ani żadnego nagłówka Sec-, nie może pominąć weryfikacji certyfikatu i nie może czytać plików ze ścieżki. Cel przeglądarkowy informuje, które nagłówki zostaną odrzucone. Cel Node.js potrafi to wszystko: pliki są odczytywane przez openAsBlob i readFile, a --insecure lub proxy stają się dispatcherem undici.

Aby sprawdzić, co oznacza status odpowiedzi po wykonaniu żądania, zajrzyj do listy kodów statusu HTTP. Wartości parametrów zapytania, które wymagają kodowania, możesz zakodować koderem URL.

Zasady cudzysłowów obsłużone

Większość błędów konwersji wynika z cudzysłowów. W powłoce POSIX cudzysłowy pojedyncze zachowują wszystko dosłownie, podwójne nadal przetwarzają \" i \$, a $'…' rozumie sekwencje ucieczki takie jak \n i \x41. Ukośnik wsteczny na końcu wiersza kontynuuje polecenie. cmd w Windows używa zamiast tego ^ do znaków ucieczki i kontynuacji, i właśnie to generuje „Copy as cURL (cmd)”. Tokenizer stosuje każdą z tych zasad, więc Twój kod wysyła dokładnie tę treść, którą wysłałby curl.

Wszystko po potoku, średniku lub przekierowaniu, na przykład | jq ., należy do powłoki, a nie do curl, i jest pomijane z uwagą.

Najczęstsze pytania

Czy moje polecenie curl jest wysyłane na serwer?
Nie. Polecenie jest analizowane, a kod generowany w Twojej przeglądarce. Tokeny, cookies i hasła w nim zawarte nigdy nie opuszczają Twojego urządzenia.
Jak skopiować żądanie jako curl w przeglądarce?
Otwórz narzędzia deweloperskie (F12), wybierz kartę Network, kliknij żądanie prawym przyciskiem i wybierz Copy, a potem Copy as cURL. W Windows możesz wkleić tutaj zarówno wersję bash, jak i cmd.
Które opcje curl są obsługiwane?
Opcje definiujące żądanie: metoda, URL, nagłówki, cookies, wszystkie warianty -d, --json, formularze -F, uwierzytelnianie -u, -G, -I, -T, -L, -k, --compressed, --max-time i --proxy. Opcje wyjścia, takie jak -s, -o i -v, nie wpływają na żądanie i są pomijane.
Dlaczego kod fetch dla przeglądarki pomija niektóre nagłówki?
Przeglądarki zabraniają skryptom ustawiania nagłówków takich jak Cookie, Referer, Host i Accept-Encoding, a fetch po cichu je odrzuca. Jeśli musisz je wysłać, użyj celu Node.js.
Jak konwertowane jest przesyłanie plików?
Pole -F takie jak file=@photo.jpg staje się polem pliku multipart, które w Node.js, Python, Go, PHP i Rust odczytuje photo.jpg z dysku. W fetch dla przeglądarki używany jest plik wybrany przez <input type="file">, ponieważ strony nie mogą czytać plików po ścieżce.
Co robi --data-urlencode?
Koduje wartość procentowo przed wysłaniem, więc name=a b&c jest wysyłane jako name=a%20b%26c. Konwerter stosuje to samo kodowanie, dzięki czemu wygenerowany kod wysyła te same bajty.
Czy curl podąża za przekierowaniami?
Tylko jeśli podasz -L. Większość bibliotek HTTP domyślnie podąża za przekierowaniami, więc wygenerowany kod zwykle i tak to robi; rozszerzenie curl dla PHP robi to tylko wtedy, gdy podano -L.