Menu

Konwerter cURL

Zamieniaj dowolne polecenie curl na fetch, axios, Python requests, Go, PHP i inne.

Autor: Nethanel Bar, Co-founder & CEO

Ostatnia aktualizacja

Chcesz naprawdę nauczyć się programować?

Coddy uczy cię przez pisanie prawdziwego kodu w przeglądarce: interaktywne lekcje, natychmiastowa informacja zwrotna i pomoc AI, gdy utkniesz.

Czym jest konwerter cURL?

Konwerter cURL zamienia polecenie curl (format, w którym podaje żądania każda dokumentacja API, eksport z Postmana i asystent AI) w gotowy do wklejenia kod w twoim prawdziwym języku programowania. Nagłówki, parametry zapytania, ciała JSON, przesyłanie multipart, basic auth i ciasteczka przechodzą bez zmian, więc nie musisz tłumaczyć żądania ręcznie.

curl to uniwersalny sposób opisu żądania HTTP, ale na produkcji rzadko *uruchamiasz* curl. Używasz fetch w JavaScripcie, requests w Pythonie, net/http w Go albo tego, czego wymaga twój stos. To narzędzie wypełnia tę lukę: wklej curl, kliknij zakładkę, skopiuj kod.

Wszystko działa lokalnie w przeglądarce. Twoje polecenie curl, nagłówki i tokeny nigdy nie opuszczają komputera. To przydatne, gdy wklejasz polecenia z prawdziwymi tokenami bearer albo ciasteczkami sesji.

Czego nauczysz się podczas konwersji

  • Flagi curl odpowiadają konkretnym pojęciom w każdym kliencie HTTP: -H to nagłówek żądania, -d to ciało, -X to metoda, -u to basic auth, a -F to pole formularza multipart.
  • Gdy curl widzi ciało (-d, --data, -F) bez -X, domyślnie używa POST. Większość klientów ma ten sam domyślny wybór, więc brak -X nadal daje POST w wyniku.
  • Ciała JSON różnią się od ciał formularzy. Content-Type: application/json oznacza, że ciało jest wysyłane dosłownie, a application/x-www-form-urlencoded, że pary klucz/wartość są łączone znakiem &.
  • -G przenosi ciało do parametrów zapytania w żądaniach GET. Wynik to odzwierciedla: zobaczysz wypełnione params / query i żadnego wysłanego ciała.

Jak krok po kroku zamienić curl na kod

  1. Wklej polecenie curl

    Wrzuć całe polecenie, łącznie z kontynuacjami linii \ skopiowanymi z dokumentacji, do pola wejściowego. Parser sam normalizuje typograficzne cudzysłowy i znaczniki promptu PowerShella.

  2. Wybierz język docelowy

    Zakładki obejmują JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie i PowerShell. Przełączanie zakładek nic nie kosztuje, bo parsowanie odbywa się raz.

  3. Sprawdź sparsowane żądanie

    Otwórz panel *Sparsowane żądanie*, aby potwierdzić, że metoda, URL, nagłówki, rodzaj ciała i opcje takie jak insecure czy follow redirects zostały odczytane tak, jak się spodziewasz.

  4. Skopiuj i popraw uwierzytelnianie

    Skopiuj wygenerowany kod do projektu. Jeśli curl zawierał token bearer albo ciasteczko, przed commitem zamień dosłowną wartość na zmienną środowiskową.

Ściąga flag cURL

Flagi, które rozumie ten konwerter, i ich odpowiedniki w wygenerowanym kodzie.

FlagZnaczeniePrzykład
-X, --requestMetoda HTTP-X POST
-H, --headerNagłówek żądania (można powtarzać)-H 'Accept: application/json'
-d, --dataCiało żądania, domyślnie kodowane jak URL-d 'name=Ada&age=30'
--data-rawCiało bez rozwijania @file--data-raw '$body'
--data-urlencodeKoduje procentowo część ciała--data-urlencode 'q=hello world'
-F, --formPole formularza multipart (@file dla plików)-F 'avatar=@photo.jpg'
-u, --userBasic auth → Authorization: Basic …-u alice:s3cret
-G, --getPrzenosi ciało do parametrów zapytania, wysyła GET-G -d 'q=ada'
-b, --cookieNagłówek Cookie-b 'session=abc'
-A, --user-agentNagłówek User-Agent-A 'MyApp/1.0'
-L, --locationPodąża za przekierowaniami 3xx-L
-k, --insecurePomija weryfikację TLS (tylko do developmentu!)-k
--compressedAkceptuje odpowiedź gzip/deflate/br--compressed
--max-timeLimit czasu całego żądania w sekundach--max-time 30

Przykłady konwersji cURL

GET z parametrami zapytania i nagłówkiem autoryzacji

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

Parametry zapytania w URL zostają w URL: dla fetch konwerter nie rozbija ich na osobny obiekt params. W axios i requests zobaczysz je przeniesione do params / params= dla czytelności.

POST z ciałem JSON

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

Gdy ciało da się sparsować jako JSON, a Content-Type to application/json, konwerter generuje json= dla requests i data: (sparsowany obiekt) dla axios. Gdy JSON.parse się nie powiedzie, oryginalny ciąg zostaje zachowany, nigdy przepisany.

Przesyłanie pliku multipart

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

-F field=@file staje się prawdziwym przesłaniem pliku (open('…', 'rb') w Pythonie, FormData.append w JavaScripcie). Zwykłe pola -F stają się zwykłymi wartościami formularza. Podgląd w przeglądarce pokazuje znacznik TODO w miejscu plików, które trzeba podać w czasie działania.

Basic auth + ciasteczko

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

Basic auth zostaje zwinięte do jednego nagłówka Authorization. Ciasteczka są łączone przez ; i wysyłane jako jeden nagłówek Cookie, dokładnie tak, jak robi to curl.

Częste błędy przy konwersji curl

  • Wklejanie curl z typograficznymi cudzysłowami (', ', ", ") z wpisu na blogu. Wyglądają jak cudzysłowy, ale psują parsowanie w powłoce. Konwerter je normalizuje, ale jeśli możesz, skopiuj oryginalne polecenie.
  • Zostawianie -k (--insecure) na produkcji. Wyłącza weryfikację certyfikatu TLS: w lokalnym developmencie to w porządku, w prawdziwym ruchu jest niebezpieczne.
  • Zapominanie, że --data-raw i --data działają inaczej: --data koduje dane jak URL. Dla ciał JSON zawierających @ lub & używaj --data-raw.
  • Wklejanie polecenia curl.exe z Windows bez zamiany kontynuacji linii ^ na \. Konwerter sobie z tym radzi, ale parser jest rygorystyczny wobec cudzysłowów, więc sprawdź granice ciągów.
  • Kopiowanie tokenów bearer lub ciasteczek do systemu kontroli wersji po konwersji. Przed commitem zamień je na zmienne środowiskowe (process.env.API_TOKEN, os.environ['API_TOKEN']).

Konwerter cURL: FAQ

Jakie języki obsługuje konwerter?
Dwanaście celów od razu: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie i PowerShell (Invoke-RestMethod). Każdy powstaje z tej samej sparsowanej reprezentacji, więc przełączanie zakładek jest natychmiastowe.
Czy obsługuje przesyłanie multipart i flagi -F?
Tak. -F field=value staje się zwykłym polem formularza, a -F file=@path prawdziwym przesłaniem pliku przez FormData (JS), files= (Python), CURLFile (PHP) i tak dalej. Ścieżki plików pojawiają się jako znaczniki TODO, które w czasie działania trzeba podpiąć pod File, Buffer lub strumień.
Czy moje polecenie curl jest wysyłane na serwer?
Nie. Parser i wszystkie generatory kodu działają w twojej przeglądarce. Tokeny bearer, ciasteczka i ciała żądań nigdy nie opuszczają komputera, a w podglądzie *Sparsowane żądanie* domyślnie je maskujemy.
Dlaczego mój curl z Windows wygląda inaczej?
curl.exe w Windows (oraz CMD/PowerShell) używa ^ albo grawisu ` jako kontynuacji linii i może inaczej zapisywać cudzysłowy. Konwerter normalizuje typowe wzorce z Windows, ale jeśli wklejony tekst wygląda źle, skopiuj polecenie jako jedną linię.
Czy obsługuje żądania GraphQL?
Tak. Żądanie GraphQL to po prostu POST z ciałem JSON zawierającym query i variables. Wklej curl, a konwerter wygeneruje zwykły POST z JSON w twoim języku docelowym. Kształt odpowiedzi ({ data, errors }) obsługuj tak samo jak w każdym kliencie GraphQL.
Czy mogę wkleić curl wyeksportowany z Postmana?
Tak. Eksport *Code → cURL* z Postmana jest w pełni obsługiwany, łącznie z wieloliniowym formatowaniem \. Tak samo curl z opcji *Copy as cURL* w DevTools Chrome i Firefoksa.
fetch czy axios: który wynik wybrać?
Użyj fetch, jeśli twój projekt już go ma (jest wbudowany w przeglądarki i nowoczesny Node). Wybierz axios, jeśli potrzebujesz automatycznego parsowania JSON, interceptorów żądań, ponawiania albo zdarzeń postępu, czyli funkcji, których fetch nie daje od razu.

Dowiedz się więcej

Inne narzędzia dla programistów

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ