cURL в Swift

Вставьте команду curl и получите код Swift, выполняющий тот же запрос через URLSession.

cURL в Swift разбирает команду в браузере: токены и учётные данные не покидают ваше устройство.

Создаёт и поддерживает Udit Agarwal

Попробовать клиент API

Об инструменте cURL в Swift

Документация к API говорит на curl, а приложения iOS — на URLSession, и ручной перевод между ними — рутина, в которой легко наделать мелких ошибок: пропущенный заголовок, тело, оставленное строкой вместо JSON, тихо проигнорированный флаг аутентификации. Конвертер разбирает команду так же, как это делает сам curl, включая флаги, которые меняют метод или сворачивают учётные данные в заголовок, и выдаёт Swift, которому нужен только Foundation. Тело JSON становится словарём Swift, проходящим через JSONSerialization, а не непрозрачной строкой.

Возможности

  • Разбирает -X, -H, -d, --data-raw, --json, -u, -b, -A, -e и -G так же, как curl
  • Генерирует код URLSession, которому не нужно ничего, кроме Foundation
  • Тело JSON выводится словарём Swift и кодируется через JSONSerialization
  • Базовая аутентификация собирается из учётных данных с base64EncodedString
  • Метод выводится из наличия тела либо берётся из -X
  • Предупреждает о флагах curl без разумного соответствия в Swift
  • Код можно скопировать или скачать файлом .swift

Как использовать cURL в Swift

  1. Вставьте команду curl вместе с флагами и телом
  2. Прочитайте сгенерированный Swift справа
  3. Проверьте предупреждения о непереводимых флагах
  4. Скопируйте код или скачайте его как .swift

Пример

Ввод

curl https://api.example.com/users -H 'Content-Type: application/json' -d '{"name":"Ada"}'

Результат

var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

Метод выводится из наличия тела — ровно так же, как его определил бы curl.

Частые ошибки и устранение неполадок

  • В curl запрос работает, а в приложении нет. — Проверьте App Transport Security. iOS по умолчанию блокирует обычный HTTP, поэтому для http://-адреса нужно исключение в Info.plist или адрес https.
  • Код компилируется, но ничего не печатает. — URLSession асинхронна. В консольной утилите процесс завершается раньше, чем сработает обработчик: удержите цикл выполнения или перейдите на async/await.
  • Флаг -k или --insecure проигнорирован. — Намеренно. Отказ от проверки сертификата требует URLSessionDelegate, и это решение стоит принимать явно.
  • Специальные символы в теле выглядят неверно. — Проверьте кавычки в исходной команде. Тело в двойных кавычках уже прошло через вашу оболочку.

Часто задаваемые вопросы

Работает ли сгенерированный Swift на iOS, macOS и Linux?
Да. Он использует URLSession из Foundation, которая есть на платформах Apple и в swift-corelibs-foundation на Linux, поэтому тот же файл собирается и в серверном проекте.
Можно ли получить код с async/await вместо обработчика?
Генерируется задача с обработчиком завершения, которая работает везде. Замена на `let (data, response) = try await URLSession.shared.data(for: request)` — дело одной строки.
Как обрабатывается тело JSON?
Оно разбирается и выводится словарём [String: Any], а затем кодируется через JSONSerialization. Так полезная нагрузка остаётся читаемой.
Что происходит с cookie из флага -b?
Они становятся заголовком Cookie. Учтите, что у URLSession есть собственное хранилище cookie, которое может дополнять или перекрывать их.
Загружается ли команда curl при переводе в Swift?
Нет. Разбор и генерация кода происходят в браузере — это важно, потому что в командах из документации и логов часто встречаются настоящие ключи API.

Связанные инструменты

  • cURL в Fetch — Преобразуйте команду curl в вызов fetch() на JavaScript.
  • curl в Python — Преобразование команды curl в скрипт Python requests.
  • curl в Node.js — Преобразование команды curl в код Node.js axios.
  • cURL в Java — Конвертирует команду curl в код Java с HttpClient.
  • cURL в Dart — Превращает команду curl в код Dart на package:http.
  • API-клиент — Отправляйте HTTP-запросы, задавайте заголовки и параметры и изучайте ответы; сохраняет последние 25.

Другие инструменты: Инструменты API

  • cURL в Dart — Превращает команду curl в код Dart на package:http.
  • cURL в Fetch — Преобразуйте команду curl в вызов fetch() на JavaScript.
  • Разбор URL — Разбейте URL на части и просмотрите список параметров запроса.
  • API-клиент — Отправляйте HTTP-запросы, задавайте заголовки и параметры и изучайте ответы; сохраняет последние 25.
  • Генератор URL и UTM — Создавайте и проверяйте закодированные рабочие URL-адреса с параметрами UTM.
  • Тестер API OpenAI — Создавайте, выполняйте и копируйте запросы к API OpenAI Chat Completions в виде cURL, Python и JavaScript.
  • Тестер API Anthropic Claude — Создавайте, выполняйте и копируйте запросы к API Anthropic Claude Messages в виде cURL, Python и JavaScript.
  • Тестер API Google Gemini — Создавайте, выполняйте и копируйте запросы generateContent Google Gemini в виде cURL, Python и JavaScript.
  • Тестер API Replicate — Создавайте, выполняйте и копируйте запросы прогнозов API Replicate в виде cURL, Python и JavaScript.
  • Тестер API Hugging Face — Создавайте, выполняйте и копируйте запросы к Hugging Face Inference API в виде cURL, Python и JavaScript.
  • curl в Python — Преобразование команды curl в скрипт Python requests.
  • curl в Go — Преобразование команды curl в код Go net/http.

Все инструменты: Инструменты API (24) · Все инструменты