Menu

Конвертер cURL

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

Автор Nethanel Bar, Co-founder & CEO

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

Ready to actually learn to code?

Coddy teaches you by writing real code in your browser - interactive lessons, instant feedback, and AI help when you get stuck.

Что такое конвертер 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

НАЧАТЬ