Sprytne Okazje — promocje, kody rabatowe i wyprzedaże

Konwerter Fetch API na cURL

Wklej kod JavaScript Fetch API i otrzymaj gotową komendę cURL. Obsługa async/await, nagłówków, body i autoryzacji. Idealne do debugowania i dokumentacji API. Bezpłatnie.

Bezpieczne (SSL)
Przetwarzanie Lokalne
100% Darmowe
Instrukcja
  • 1
    Wprowadź dane
    Wpisz treść, wklej tekst lub załaduj plik z dysku.
  • 2
    Kliknij przycisk
    Narzędzie natychmiast przetworzy Twoje dane w przeglądarce.
  • 3
    Pobierz wynik
    Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
function runTool() {
  return "Wynik gotowy w 0.1s";
}
302 znaków

Metoda HTTP

POST

z pola method; fetch() bez method wysyła GET

Nagłówki

3 szt.

z obiektu headers

Ciało żądania

57 B

treść pola body, trafia do --data-raw

Rozmiar wyniku

271 znaków

gotowe polecenie curl do wklejenia w terminal

curl \
  -L \
  --compressed \
  -X POST \
  'https://api.example.com/v1/orders' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  --data-raw '{"productId":42,"quantity":2,"notes":"Gift wrap, please"}'
Wiersz liczony na serwerze tym samym konwerterem co wynik powyżej (kompaktowy zapis jednolinijkowy); kod w tabeli jest wypisany jako tekst, więc nic się nie wykonuje
Kod fetch()MetodaWynik curl
await fetch('https://api.example.com/v1/orders', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ productId: 42, quantity: 2 }) }); POST curl -L --compressed -X POST 'https://api.example.com/v1/orders' -H 'Authorization: Bearer YOUR_TOKEN' -H 'Content-Type: application/json' --data-raw '{"productId":42,"quantity":2}'
URL → adres, method → -X, headers → -H, body → --data-raw (+ Content-Type przy JSON); opcje typu cache/mode/credentials oraz .then()/.catch() są pomijane
Element fetch()Odpowiednik curlCo robi konwerter
fetch('https://…') adres polecenia pierwszy argument fetch — tekst w apostrofach, cudzysłowach albo backtickach — staje się adresem curl
method: 'POST' -X POST pole method z obiektu opcji; brak method oznacza GET — wtedy flaga -X nie jest dopisywana
headers: { 'X': 'Y' } -H 'X: Y' każda para klucz–wartość z obiektu headers (albo new Headers({…})) osobną flagą -H
body: JSON.stringify({…}) --data-raw '{…}' obiekt jest porządkowany do poprawnego JSON; gdy brak nagłówka Content-Type, dodawany jest application/json
body: 'tekst' / body: `tekst` --data-raw ciało tekstowe (string albo szablon) trafia do --data-raw bez zmian
cache, mode, credentials, signal pomijane opcje fetch() bez bezpośrednich odpowiedników w curl — konwerter tłumaczy tylko samo żądanie
.then() / .catch() pomijane obsługa odpowiedzi to kod otaczający, nie część żądania HTTP

To narzędzie jest odwrotnością Konwertera cURL na Fetch API — razem pokrywają obie strony tłumaczenia żądań HTTP.

Warto wiedzieć — fetch() i curl w praktyce

Metoda: fetch nie zgaduje

fetch() bez pola method zawsze wysyła GET — nawet gdy ustawi body. curl zachowuje się inaczej: sama flaga -d zmienia metodę na POST. Konwerter dlatego zapisuje metodę wprost (-X), odwzorowując to, co faktycznie zrobi fetch(), a nie to, co zgadłby curl.

Ciało JSON i Content-Type

body: JSON.stringify({…}) trafia do --data-raw jako poprawny JSON. Gdy w headers nie ma Content-Type, konwerter dopisuje application/json — bez tego serwer często nie zrozumie żądania, mimo poprawnego ciała.

Cudzysłowy: powłoka ma znaczenie

Styl single (apostrofy) to zapis dla powłok POSIX — plik .sh gotowy do uruchomienia w Linuksie/macOS. Styl double jest przyjazny PowerShell, który nie łączy poleceń backslashem — dlatego zapis dla Windows pobierasz jako .txt i wklejasz jako jedną linię.

Co zostaje poza tłumaczeniem

Interceptory, credentials: 'include', AbortSignal czy polityka CORS dotyczą środowiska przeglądarki, nie samego żądania HTTP. Po przestawieniu na curl pilnuj też tokenów — polecenie z Authorization: Bearer zostaje w historii powłoki.

Oceń to narzędzie:

Powiązane narzędzia

Inne narzędzia, które mogą Ci się przydać

Konwerter Fetch API na cURL – komenda terminalna z kodu JS

Reverse-engineering żądania Fetch do postaci komendy cURL jest przydatny gdy: testujesz API w terminalu, tworzysz dokumentację, debugujesz żądania lub chcesz uruchomić to samo zapytanie z serwera. Narzędzie parsuje kod JavaScript (async/await lub .then()) i generuje kompletną komendę cURL z flagami.

konwerter Fetch na cURL fetch to curl JavaScript na komendę curl fetch API debugowanie

Co jest parsowane z kodu Fetch

URL (pierwszy argument fetch()). method z opcji → -X METHOD. headers z opcji → -H "Nagłówek: wartość". body → -d lub --data-binary. credentials: "include" → -b (cookie forwarding). mode: "no-cors" → flaga --no-cors (informacyjna). signal (AbortController) → ignorowane w cURL.

Generowane flagi cURL

Podstawowe: -X POST -H "Content-Type: application/json" -d '{"key":"val"}'. Kompresja: --compressed (gdy Accept-Encoding: gzip). SSL skip (dev): -k lub --insecure. Verbose (debug): -v. Redirect follow: -L. Cookie jar: -c cookies.txt -b cookies.txt. Output do pliku: -o response.json.

Obsługa typów body

JSON (body: JSON.stringify({})): automatycznie dodaje -H "Content-Type: application/json" jeśli brakuje. FormData: generuje -F "field=value". URLSearchParams: --data-urlencode lub -d z query string. Binary blob: --data-binary z ostrzeżeniem o ograniczeniach.

Zastosowania w pracy deweloperskiej

Kopiuj żądania z Chrome DevTools (Copy as Fetch) → wklej tutaj → otrzymaj cURL do dokumentacji. Odtwórz żądanie klienta po stronie serwera dla debugowania. Udostępnij komendę innemu deweloperowi bez dzielenia się kodem JS. Integracja z narzędziami jak Postman, Insomnia (import cURL).

Jak działa konwersja: od składni JavaScript do komendy cURL

Narzędzie nie uruchamia kodu JavaScript i nie wysyła żadnego żądania do serwera. Działa jak uproszczony parser: skanuje wklejony tekst w poszukiwaniu wywołania fetch, wyznacza granice pierwszego argumentu (adresu) i drugiego argumentu (obiektu opcji), a następnie zamienia je na flagi curl. Wartości odczytywane są wyłącznie z literałów: łańcuchów w cudzysłowach, apostrofach oraz template stringów bez podstawień. Jeśli w miejscu adresu albo nagłówka stoi zmienna, wyrażenie warunkowe lub wywołanie funkcji, parser nie zna jej wartości w czasie działania i w tym miejscu wstawia placeholder bądź pomija pole.

Drugi etap to mapowanie jeden do jednego. Każdy rozpoznany klucz obiektu opcji ma przypisaną flagę: method staje się -X, każdy wpis w headers osobnym -H, ciało żądania trafia do -d, --data-binary albo -F w zależności od rozpoznanego typu. Kolejność flag w wyniku jest stała: metoda, adres, nagłówki, dane, opcje sieciowe, wyjście. curl nie wymaga takiego porządku, ale powtarzalny układ ułatwia porównywanie komend w dokumentacji i podczas przeglądu kodu.

Trzeci etap to kontrola spójności. Parser sprawdza, czy nawiasy i cudzysłowy są domknięte, czy obiekt opcji nie został urwany oraz czy typ ciała pasuje do nagłówka Content-Type. Świadomie ignoruje wszystko, co dzieje się poza samym wywołaniem: pętle, warunki, obsługę response.json(), kolejne żądania w łańcuchu oraz instrukcje po await. Efektem jest jedna komenda odpowiadająca jednemu wywołaniu fetch.

Przykład krok po kroku: zamówienie POST z nagłówkiem Authorization

  1. Wejście. Do pola konwertera trafia fragment: const res = await fetch("https://api.example.com/v1/orders?limit=20", { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer TOKEN" }, body: JSON.stringify({ id: 7, status: "nowe" }), credentials: "include" });
  2. Adres. Parser rozpoznaje literał i przenosi go do komendy razem z parametrem limit=20. Nie zamienia go na --data-urlencode, bo w fetch parametry są już częścią adresu, a nie osobnym obiektem.
  3. Metoda. method: "POST" daje -X POST. Gdyby tego pola nie było, w wyniku nie pojawiłoby się -X i curl wykonałby GET.
  4. Nagłówki. Dwa wpisy w obiekcie to dwie osobne flagi: -H "Content-Type: application/json" oraz -H "Authorization: Bearer TOKEN", zapisane w kolejności występowania w kodzie. Wartość TOKEN pozostaje zwykłym tekstem, bo narzędzie nie wie, co podstawia się tam w działającej aplikacji.
  5. Ciało. JSON.stringify({ id: 7, status: "nowe" }) zamienia się na -d '{"id":7,"status":"nowe"}'. Nagłówek Content-Type nie jest dopisywany drugi raz, ponieważ już występuje w opcjach żądania.
  6. Wynik. Powstaje komenda: curl -X POST 'https://api.example.com/v1/orders?limit=20' -H 'Content-Type: application/json' -H 'Authorization: Bearer TOKEN' -d '{"id":7,"status":"nowe"}' -b. Flaga -b pochodzi z credentials: "include". Przed uruchomieniem podmień TOKEN na prawdziwą wartość i sprawdź, czy w Twojej powłoce działają pojedyncze cudzysłowy.

Mapowanie pól Fetch na flagi cURL – tabela referencyjna

Pole w kodzie FetchFlaga lub efekt w cURLKiedy to istotne
redirect: "follow"-LGdy endpoint odpowiada kodem 301 lub 302, a chcesz zobaczyć treść docelową.
redirect: "manual"brak flagi -LGdy badasz samą odpowiedź przekierowania i jej nagłówki Location.
cache: "no-store"-H "Cache-Control: no-cache"Gdy testujesz zachowanie serwera lub pośrednika przy wymuszonym odświeżeniu.
headers: new Headers({...})po jednej fladze -H na każdy wpisGdy kod buduje nagłówki obiektem Headers zamiast zwykłym literałem.
body: new URLSearchParams(...)-G --data-urlencodeGdy parametry mają trafić do query stringa, a nie do treści żądania.
keepalive: truebrak odpowiednikaCurl kończy żądanie razem z procesem, więc nie podtrzymuje go w tle.
integrity: "sha384-..."brak odpowiednikaSprawdzenie integralności podzasobu wykonuje przeglądarka, nie serwer ani terminal.

Praktyczne wskazówki przed skopiowaniem komendy

  • Wklejaj kod z literałami. Najlepiej działa fragment, w którym adres, nagłówki i ciało są zapisane wprost. Kod z konfiguracją wstrzykiwaną z zewnątrz wymaga ręcznego uzupełnienia placeholderów.
  • Nie zostawiaj prawdziwych tokenów w schowku. Komenda z nagłówkiem Authorization, która trafi do dokumentacji lub na czat, jest równoznaczna z ujawnieniem danych dostępowych. Podmień wartość na placeholder przed udostępnieniem.
  • Sprawdź quoting w swojej powłoce. Pojedyncze cudzysłowy działają w bashu i zsh, natomiast w PowerShell oraz cmd trzeba użyć innych znaków albo pliku z ciałem żądania.
  • Duże ciała trzymaj w pliku. Dla rozbudowanego JSON-a wygodniej zapisać payload do pliku i użyć --data-binary @payload.json niż wklejać wielolinijkowy łańcuch do terminala.
  • Porównaj wynik z zachowaniem przeglądarki. Jeśli fetch zwracał dane, a curl zwraca 403, sprawdź nagłówki User-Agent, Origin i ciasteczka, zanim uznasz komendę za błędną.

Czego konwerter nie uwzględnia

  • Analiza statyczna zamiast wykonania kodu. Konwerter nie rozwiąże zmiennych, konkatenacji ani funkcji budujących opcje. Dla parsera to nieznane wartości, więc w wyniku pojawi się placeholder albo luka.
  • Brak kontekstu przeglądarki. Ciasteczka, nagłówek Origin, polityka CORS i uprawnienia service workera nie są częścią kodu fetch, dlatego nie da się ich odtworzyć z wklejonego fragmentu.
  • Logika wokół żądania zostaje poza zakresem. Ponowienia, opóźnienia, interceptory, kolejność kilku wywołań i przetwarzanie odpowiedzi nie trafiają do wyniku — powstaje jedna komenda, a nie cała funkcja.
  • Różnice między powłokami. Wygenerowana komenda jest zapisana pod powłokę uniksową. W PowerShell, cmd i części konfiguracji Windows Terminala cudzysłowy oraz apostrofy trzeba poprawić ręcznie.

Najczęstsze pytania

Czy konwerter obsługuje wszystkie warianty składni Fetch?

Narzędzie obsługuje: fetch(url), fetch(url, options), const r = await fetch(...), .then(r=>r.json()). Nie obsługuje: dynamicznie generowanych URL przez zmienne (parseowanie statyczne), custom Request object (new Request(url, opts)).

Jak skopiować żądanie z Chrome jako Fetch?

Chrome DevTools → Network → kliknij żądanie → prawy klik → Copy → "Copy as fetch". Wynik wklej do narzędzia. Alternatywnie "Copy as cURL" – nie potrzebujesz wtedy konwersji.

Czy cURL działa na Windows?

Tak – cURL jest dostępny na Windows 10+ (wbudowany w PowerShell i CMD). Dla starszych: zainstaluj curl.exe (curl.se/windows). Cudzysłowy: na Windows CMD użyj podwójnych cudzysłowów zamiast pojedynczych.

Jaka jest komenda cURL do pobrania JSON z API?

curl -s -H "Accept: application/json" https://api.example.com/data | jq. Flaga -s: silent (bez progressbara). jq: formatowanie JSON. Zapis do pliku: curl -o data.json URL. Z auth: curl -H "Authorization: Bearer TOKEN" URL.

Jak dodać cURL do CI/CD pipeline?

cURL jest dostępny w większości Docker images (ubuntu, alpine + apt/apk). Przykład health check: curl --fail --max-time 5 https://app.example.com/health. Jeśli zwróci kod 4xx/5xx lub timeout – docker/GitHub Actions traktuje krok jako failure.

Jak zamienić fetch na curl?

Wklej fragment kodu z wywołaniem fetch do pola konwertera i uruchom zamianę. Narzędzie odczyta adres, metodę, nagłówki i ciało, a następnie wypisze gotową komendę curl do skopiowania.

Dlaczego w wygenerowanej komendzie brakuje mojego ciała żądania?

Najczęściej dlatego, że ciało powstaje w zmiennej albo w funkcji, a nie w literale. Parser nie wykonuje kodu, więc widzi tylko nazwę zmiennej — w takiej sytuacji wstaw treść ręcznie jako -d lub --data-binary.

Czy konwerter obsługuje axios i inne biblioteki?

Nie, obsługuje wyłącznie składnię Fetch API, w tym warianty z async/await oraz z .then(). Kod z axios, gotowych klientów HTTP albo własnych wrapperów trzeba najpierw przełożyć na fetch lub napisać komendę ręcznie.

Dlaczego curl zwraca 403, a fetch w przeglądarce działa?

Przeglądarka dokłada nagłówki, o których sam kod nie mówi: Origin, Referer, User-Agent i ciasteczka przypisane do domeny. Serwer może je weryfikować, dlatego żądanie z terminala wygląda inaczej niż to samo żądanie z karty przeglądarki.

Czym różni się curl od fetch?

fetch to interfejs przeglądarki i środowisk JavaScript, który działa w kontekście strony i podlega polityce CORS. curl to samodzielny program w terminalu, który wysyła żądanie spoza przeglądarki i nie stosuje ograniczeń tej samej domeny.

Powiązane narzędzia: konwerter cURL na Fetch API, generator testowego JSON API i walidator JSON.

Zainstaluj Webp.pl Miej narzędzia we własnej kieszeni!