Menu

Конвертер cURL

Преобразуйте любую команду curl в fetch, axios, Python requests, Go, PHP и многое другое.

Последнее обновление

Вставьте команду curlВставьте команду curl, чтобы начать
JavaScript (fetch)
Вставьте команду curl выше, чтобы сгенерировать код на 12 языках.

Что такое конвертер cURL?

Конвертер cURL превращает команду curl — формат, в котором запросы отдают любая документация API, экспорт из Postman и AI-ассистенты — в готовый к вставке код на вашем рабочем языке программирования. Заголовки, query-строки, JSON-тела, multipart-загрузки, basic auth и куки переносятся автоматически, чтобы вам не пришлось переводить запрос вручную.

curl — это универсальный способ описать HTTP-запрос, но в продакшене вы *запускаете* curl редко. У вас работают JavaScript fetch, Python requests, Go net/http или то, что принято в вашем стеке. Этот инструмент закрывает разрыв: вставили curl, кликнули по вкладке, скопировали код.

Всё работает локально в браузере. Ваша команда curl, заголовки и токены никуда не уходят — это удобно, когда в команде есть настоящие bearer-токены или сессионные куки.

Что вы заодно поймёте, конвертируя curl

  • Флаги curl однозначно ложатся на понятия любого HTTP-клиента: -H — это заголовок запроса, -d — тело, -X — метод, -u — basic auth, -F — поле multipart-формы.
  • Если curl видит тело (-d, --data, -F) и при этом нет -X, он по умолчанию использует POST — так же, как и большинство клиентов. Поэтому пропущенный -X всё равно превращается в POST в результате.
  • JSON-тело и form-тело — это не одно и то же. Content-Type: application/json означает, что тело отправляется как есть; application/x-www-form-urlencoded означает, что пары ключ-значение склеиваются через &.

Как перевести curl в код по шагам

  1. Вставьте команду curl

    Положите команду целиком — вместе с переносами \ из скопированной документации — в поле ввода. Парсер сам нормализует «умные» кавычки и подсказки приглашения PowerShell.

  2. Выберите целевой язык

    Вкладки покрывают JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie и PowerShell. Переключение вкладок ничего не стоит — разбор выполняется один раз.

  3. Проверьте разобранный запрос

    Откройте панель *Разобранный запрос* и убедитесь, что метод, URL, заголовки, тип тела и опции вроде insecure или follow redirects распознаны так, как вы ожидали.

  4. Скопируйте код и поправьте авторизацию

    Перенесите сгенерированный код в проект. Если в curl был bearer-токен или кука, замените литеральное значение на переменную окружения, прежде чем коммитить.

Краткий справочник по флагам cURL

Флаги, которые понимает конвертер, и во что они превращаются в сгенерированном коде.

ФлагЗначениеПример
-X, --requestHTTP-метод-X POST
-H, --headerЗаголовок запроса (можно повторять)-H 'Accept: application/json'
-d, --dataТело запроса — по умолчанию с URL-кодированием-d 'name=Ada&age=30'
--data-rawТело без раскрытия @file--data-raw '$body'
--data-urlencodeПроцентное кодирование части тела--data-urlencode 'q=hello world'
-F, --formПоле multipart-формы (для файлов используйте @file)-F 'avatar=@photo.jpg'
-u, --userBasic auth → Authorization: Basic …-u alice:s3cret
-G, --getПереносит тело в query-строку и шлёт GET-G -d 'q=ada'
-b, --cookieЗаголовок Cookie-b 'session=abc'
-A, --user-agentЗаголовок User-Agent-A 'MyApp/1.0'
-L, --locationСледовать 3xx-редиректам-L
-k, --insecureПропустить проверку TLS (только для dev!)-k
--compressedПринимать ответ в gzip/deflate/br--compressed
--max-timeТаймаут всего запроса в секундах--max-time 30

Примеры конвертации cURL

GET с query-строкой и заголовком авторизации

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();

Параметры из URL остаются в URL — конвертер не разбивает их в отдельный объект params для fetch. Для axios и requests вы увидите, как они вынесены в params / params= ради читаемости.

POST с 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()

Когда тело парсится как JSON и Content-Type равен application/json, конвертер выдаёт json= для requests и data: (распарсенный объект) для axios. Если JSON.parse не удался, исходная строка сохраняется как есть — без переписывания.

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 становится настоящей загрузкой файла (open('…', 'rb') в Python, FormData.append в JavaScript). Обычные поля -F остаются обычными значениями формы. В предпросмотре браузер показывает заглушку TODO для тех файловых блобов, которые вам нужно подставить в рантайме.

Basic auth и куки

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 схлопывается в один заголовок Authorization. Куки склеиваются через ; и уходят одним заголовком Cookie — ровно так же, как это делает curl на проводе.

Частые ошибки при конвертации curl

  • Вставлять curl с «умными» кавычками (', ', ", ") из поста в блоге — они выглядят как обычные кавычки, но ломают разбор в шелле. Конвертер их нормализует, но лучше копировать исходную команду, если есть возможность.
  • Оставлять -k (--insecure) в продакшене. Этот флаг отключает проверку TLS-сертификата — нормально для локальной разработки, опасно в реальном трафике.
  • Забывать, что --data-raw и --data ведут себя по-разному — --data применяет URL-кодирование к вводу. Для JSON-тел, в которых есть @ или &, используйте --data-raw.

FAQ по конвертеру cURL

Какие языки поддерживает конвертер?
Из коробки — двенадцать целей: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie и PowerShell (Invoke-RestMethod). Все они генерируются из одного и того же разобранного представления — переключение вкладок мгновенное.
Работает ли он с multipart-загрузками и флагами -F?
Да. -F field=value превращается в обычное поле формы, а -F file=@path — в настоящую загрузку файла через FormData (JS), files= (Python), CURLFile (PHP) и так далее. Пути к файлам появляются как заглушки TODO, которые вам нужно подключить к File, Buffer или потоку в рантайме.
Отправляется ли моя команда curl на сервер?
Нет. Парсер и все генераторы кода работают в браузере. Bearer-токены, куки и тела запросов никуда не уходят — по умолчанию мы их даже маскируем в предпросмотре *Разобранный запрос*.
Почему мой Windows-curl выглядит иначе?
В Windows curl.exe (а также в CMD и PowerShell) для переносов используется ^ или обратная кавычка \`, а кавычки расставлены по-другому. Конвертер нормализует типичные Windows-паттерны, но если вставка выглядит криво, попробуйте скопировать команду одной строкой.
Поддерживает ли он GraphQL-запросы?
Да — GraphQL-запрос это обычный POST с JSON-телом, в котором лежат query и variables. Вставьте curl, и конвертер сгенерирует обычный JSON-POST на нужном языке. Структуру ответа ({ data, errors }) обрабатывайте так же, как в любом GraphQL-клиенте.
Можно ли вставить curl, экспортированный из Postman?
Да. Экспорт *Code → cURL* из Postman поддерживается полностью, включая многострочное форматирование с \. Так же поддерживается curl из *Copy as cURL* в DevTools Chrome и Firefox.
fetch или axios — какой вариант выбрать?
Берите fetch, если он уже есть в проекте (он встроен в браузеры и современный Node). Берите axios, если нужны автоматический разбор JSON, перехватчики запросов, ретраи или события прогресса — этих возможностей fetch из коробки не даёт.

Узнать больше

Другие инструменты разработчика

Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ