cURL в Swift
Вставьте команду curl и получите код Swift, выполняющий тот же запрос через URLSession.
cURL в Swift разбирает команду в браузере: токены и учётные данные не покидают ваше устройство.
Попробовать клиент 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
- Вставьте команду curl вместе с флагами и телом
- Прочитайте сгенерированный Swift справа
- Проверьте предупреждения о непереводимых флагах
- Скопируйте код или скачайте его как .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.
Все инструменты ArrayKit